(function($, undefined){ var uuid=0, runiqueId=/^ui-id-\d+$/; $.ui=$.ui||{}; $.extend($.ui, { version: "1.10.3", keyCode: { BACKSPACE: 8, COMMA: 188, DELETE: 46, DOWN: 40, END: 35, ENTER: 13, ESCAPE: 27, HOME: 36, LEFT: 37, NUMPAD_ADD: 107, NUMPAD_DECIMAL: 110, NUMPAD_DIVIDE: 111, NUMPAD_ENTER: 108, NUMPAD_MULTIPLY: 106, NUMPAD_SUBTRACT: 109, PAGE_DOWN: 34, PAGE_UP: 33, PERIOD: 190, RIGHT: 39, SPACE: 32, TAB: 9, UP: 38 }}); $.fn.extend({ focus: (function(orig){ return function(delay, fn){ return typeof delay==="number" ? this.each(function(){ var elem=this; setTimeout(function(){ $(elem).focus(); if(fn){ fn.call(elem); }}, delay); }) : orig.apply(this, arguments); };})($.fn.focus), scrollParent: function(){ var scrollParent; if(($.ui.ie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){ scrollParent=this.parents().filter(function(){ return (/(relative|absolute|fixed)/).test($.css(this,"position"))&&(/(auto|scroll)/).test($.css(this,"overflow")+$.css(this,"overflow-y")+$.css(this,"overflow-x")); }).eq(0); }else{ scrollParent=this.parents().filter(function(){ return (/(auto|scroll)/).test($.css(this,"overflow")+$.css(this,"overflow-y")+$.css(this,"overflow-x")); }).eq(0); } return (/fixed/).test(this.css("position"))||!scrollParent.length ? $(document):scrollParent; }, zIndex: function(zIndex){ if(zIndex!==undefined){ return this.css("zIndex", zIndex); } if(this.length){ var elem=$(this[ 0 ]), position, value; while(elem.length&&elem[ 0 ]!==document){ position=elem.css("position"); if(position==="absolute"||position==="relative"||position==="fixed"){ value=parseInt(elem.css("zIndex"), 10); if(!isNaN(value)&&value!==0){ return value; }} elem=elem.parent(); }} return 0; }, uniqueId: function(){ return this.each(function(){ if(!this.id){ this.id="ui-id-" + (++uuid); }}); }, removeUniqueId: function(){ return this.each(function(){ if(runiqueId.test(this.id)){ $(this).removeAttr("id"); }}); }}); function focusable(element, isTabIndexNotNaN){ var map, mapName, img, nodeName=element.nodeName.toLowerCase(); if("area"===nodeName){ map=element.parentNode; mapName=map.name; if(!element.href||!mapName||map.nodeName.toLowerCase()!=="map"){ return false; } img=$("img[usemap=#" + mapName + "]")[0]; return !!img&&visible(img); } return(/input|select|textarea|button|object/.test(nodeName) ? !element.disabled : "a"===nodeName ? element.href||isTabIndexNotNaN : isTabIndexNotNaN) && visible(element); } function visible(element){ return $.expr.filters.visible(element) && !$(element).parents().addBack().filter(function(){ return $.css(this, "visibility")==="hidden"; }).length; } $.extend($.expr[ ":" ], { data: $.expr.createPseudo ? $.expr.createPseudo(function(dataName){ return function(elem){ return !!$.data(elem, dataName); };}) : function(elem, i, match){ return !!$.data(elem, match[ 3 ]); }, focusable: function(element){ return focusable(element, !isNaN($.attr(element, "tabindex"))); }, tabbable: function(element){ var tabIndex=$.attr(element, "tabindex"), isTabIndexNaN=isNaN(tabIndex); return(isTabIndexNaN||tabIndex >=0)&&focusable(element, !isTabIndexNaN); }}); if(!$("").outerWidth(1).jquery){ $.each([ "Width", "Height" ], function(i, name){ var side=name==="Width" ? [ "Left", "Right" ]:[ "Top", "Bottom" ], type=name.toLowerCase(), orig={ innerWidth: $.fn.innerWidth, innerHeight: $.fn.innerHeight, outerWidth: $.fn.outerWidth, outerHeight: $.fn.outerHeight }; function reduce(elem, size, border, margin){ $.each(side, function(){ size -=parseFloat($.css(elem, "padding" + this))||0; if(border){ size -=parseFloat($.css(elem, "border" + this + "Width"))||0; } if(margin){ size -=parseFloat($.css(elem, "margin" + this))||0; }}); return size; } $.fn[ "inner" + name ]=function(size){ if(size===undefined){ return orig[ "inner" + name ].call(this); } return this.each(function(){ $(this).css(type, reduce(this, size) + "px"); }); }; $.fn[ "outer" + name]=function(size, margin){ if(typeof size!=="number"){ return orig[ "outer" + name ].call(this, size); } return this.each(function(){ $(this).css(type, reduce(this, size, true, margin) + "px"); }); };}); } if(!$.fn.addBack){ $.fn.addBack=function(selector){ return this.add(selector==null ? this.prevObject:this.prevObject.filter(selector) ); };} if($("").data("a-b", "a").removeData("a-b").data("a-b")){ $.fn.removeData=(function(removeData){ return function(key){ if(arguments.length){ return removeData.call(this, $.camelCase(key)); }else{ return removeData.call(this); }};})($.fn.removeData); } $.ui.ie = !!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()); $.support.selectstart="onselectstart" in document.createElement("div"); $.fn.extend({ disableSelection: function(){ return this.bind(( $.support.selectstart ? "selectstart":"mousedown") + ".ui-disableSelection", function(event){ event.preventDefault(); }); }, enableSelection: function(){ return this.unbind(".ui-disableSelection"); }}); $.extend($.ui, { plugin: { add: function(module, option, set){ var i, proto=$.ui[ module ].prototype; for(i in set){ proto.plugins[ i ]=proto.plugins[ i ]||[]; proto.plugins[ i ].push([ option, set[ i ] ]); }}, call: function(instance, name, args){ var i, set=instance.plugins[ name ]; if(!set||!instance.element[ 0 ].parentNode||instance.element[ 0 ].parentNode.nodeType===11){ return; } for(i=0; i < set.length; i++){ if(instance.options[ set[ i ][ 0 ] ]){ set[ i ][ 1 ].apply(instance.element, args); }} }}, hasScroll: function(el, a){ if($(el).css("overflow")==="hidden"){ return false; } var scroll=(a&&a==="left") ? "scrollLeft":"scrollTop", has=false; if(el[ scroll ] > 0){ return true; } el[ scroll ]=1; has=(el[ scroll ] > 0); el[ scroll ]=0; return has; }}); })(jQuery); (function($, undefined){ var uuid=0, slice=Array.prototype.slice, _cleanData=$.cleanData; $.cleanData=function(elems){ for(var i=0, elem; (elem=elems[i])!=null; i++){ try { $(elem).triggerHandler("remove"); } catch(e){}} _cleanData(elems); }; $.widget=function(name, base, prototype){ var fullName, existingConstructor, constructor, basePrototype, proxiedPrototype={}, namespace=name.split(".")[ 0 ]; name=name.split(".")[ 1 ]; fullName=namespace + "-" + name; if(!prototype){ prototype=base; base=$.Widget; } $.expr[ ":" ][ fullName.toLowerCase() ]=function(elem){ return !!$.data(elem, fullName); }; $[ namespace ]=$[ namespace ]||{}; existingConstructor=$[ namespace ][ name ]; constructor=$[ namespace ][ name ]=function(options, element){ if(!this._createWidget){ return new constructor(options, element); } if(arguments.length){ this._createWidget(options, element); }}; $.extend(constructor, existingConstructor, { version: prototype.version, _proto: $.extend({}, prototype), _childConstructors: [] }); basePrototype=new base(); basePrototype.options=$.widget.extend({}, basePrototype.options); $.each(prototype, function(prop, value){ if(!$.isFunction(value)){ proxiedPrototype[ prop ]=value; return; } proxiedPrototype[ prop ]=(function(){ var _super=function(){ return base.prototype[ prop ].apply(this, arguments); }, _superApply=function(args){ return base.prototype[ prop ].apply(this, args); }; return function(){ var __super=this._super, __superApply=this._superApply, returnValue; this._super=_super; this._superApply=_superApply; returnValue=value.apply(this, arguments); this._super=__super; this._superApply=__superApply; return returnValue; };})(); }); constructor.prototype=$.widget.extend(basePrototype, { widgetEventPrefix: existingConstructor ? basePrototype.widgetEventPrefix:name }, proxiedPrototype, { constructor: constructor, namespace: namespace, widgetName: name, widgetFullName: fullName }); if(existingConstructor){ $.each(existingConstructor._childConstructors, function(i, child){ var childPrototype=child.prototype; $.widget(childPrototype.namespace + "." + childPrototype.widgetName, constructor, child._proto); }); delete existingConstructor._childConstructors; }else{ base._childConstructors.push(constructor); } $.widget.bridge(name, constructor); }; $.widget.extend=function(target){ var input=slice.call(arguments, 1), inputIndex=0, inputLength=input.length, key, value; for(; inputIndex < inputLength; inputIndex++){ for(key in input[ inputIndex ]){ value=input[ inputIndex ][ key ]; if(input[ inputIndex ].hasOwnProperty(key)&&value!==undefined){ if($.isPlainObject(value)){ target[ key ]=$.isPlainObject(target[ key ]) ? $.widget.extend({}, target[ key ], value) : $.widget.extend({}, value); }else{ target[ key ]=value; }} }} return target; }; $.widget.bridge=function(name, object){ var fullName=object.prototype.widgetFullName||name; $.fn[ name ]=function(options){ var isMethodCall=typeof options==="string", args=slice.call(arguments, 1), returnValue=this; options = !isMethodCall&&args.length ? $.widget.extend.apply(null, [ options ].concat(args)) : options; if(isMethodCall){ this.each(function(){ var methodValue, instance=$.data(this, fullName); if(!instance){ return $.error("cannot call methods on " + name + " prior to initialization; " + "attempted to call method '" + options + "'"); } if(!$.isFunction(instance[options])||options.charAt(0)==="_"){ return $.error("no such method '" + options + "' for " + name + " widget instance"); } methodValue=instance[ options ].apply(instance, args); if(methodValue!==instance&&methodValue!==undefined){ returnValue=methodValue&&methodValue.jquery ? returnValue.pushStack(methodValue.get()) : methodValue; return false; }}); }else{ this.each(function(){ var instance=$.data(this, fullName); if(instance){ instance.option(options||{})._init(); }else{ $.data(this, fullName, new object(options, this)); }}); } return returnValue; };}; $.Widget=function(){}; $.Widget._childConstructors=[]; $.Widget.prototype={ widgetName: "widget", widgetEventPrefix: "", defaultElement: "
", options: { disabled: false, create: null }, _createWidget: function(options, element){ element=$(element||this.defaultElement||this)[ 0 ]; this.element=$(element); this.uuid=uuid++; this.eventNamespace="." + this.widgetName + this.uuid; this.options=$.widget.extend({}, this.options, this._getCreateOptions(), options); this.bindings=$(); this.hoverable=$(); this.focusable=$(); if(element!==this){ $.data(element, this.widgetFullName, this); this._on(true, this.element, { remove: function(event){ if(event.target===element){ this.destroy(); }} }); this.document=$(element.style ? element.ownerDocument : element.document||element); this.window=$(this.document[0].defaultView||this.document[0].parentWindow); } this._create(); this._trigger("create", null, this._getCreateEventData()); this._init(); }, _getCreateOptions: $.noop, _getCreateEventData: $.noop, _create: $.noop, _init: $.noop, destroy: function(){ this._destroy(); this.element .unbind(this.eventNamespace) .removeData(this.widgetName) .removeData(this.widgetFullName) .removeData($.camelCase(this.widgetFullName)); this.widget() .unbind(this.eventNamespace) .removeAttr("aria-disabled") .removeClass(this.widgetFullName + "-disabled " + "ui-state-disabled"); this.bindings.unbind(this.eventNamespace); this.hoverable.removeClass("ui-state-hover"); this.focusable.removeClass("ui-state-focus"); }, _destroy: $.noop, widget: function(){ return this.element; }, option: function(key, value){ var options=key, parts, curOption, i; if(arguments.length===0){ return $.widget.extend({}, this.options); } if(typeof key==="string"){ options={}; parts=key.split("."); key=parts.shift(); if(parts.length){ curOption=options[ key ]=$.widget.extend({}, this.options[ key ]); for(i=0; i < parts.length - 1; i++){ curOption[ parts[ i ] ]=curOption[ parts[ i ] ]||{}; curOption=curOption[ parts[ i ] ]; } key=parts.pop(); if(value===undefined){ return curOption[ key ]===undefined ? null:curOption[ key ]; } curOption[ key ]=value; }else{ if(value===undefined){ return this.options[ key ]===undefined ? null:this.options[ key ]; } options[ key ]=value; }} this._setOptions(options); return this; }, _setOptions: function(options){ var key; for(key in options){ this._setOption(key, options[ key ]); } return this; }, _setOption: function(key, value){ this.options[ key ]=value; if(key==="disabled"){ this.widget() .toggleClass(this.widgetFullName + "-disabled ui-state-disabled", !!value) .attr("aria-disabled", value); this.hoverable.removeClass("ui-state-hover"); this.focusable.removeClass("ui-state-focus"); } return this; }, enable: function(){ return this._setOption("disabled", false); }, disable: function(){ return this._setOption("disabled", true); }, _on: function(suppressDisabledCheck, element, handlers){ var delegateElement, instance=this; if(typeof suppressDisabledCheck!=="boolean"){ handlers=element; element=suppressDisabledCheck; suppressDisabledCheck=false; } if(!handlers){ handlers=element; element=this.element; delegateElement=this.widget(); }else{ element=delegateElement=$(element); this.bindings=this.bindings.add(element); } $.each(handlers, function(event, handler){ function handlerProxy(){ if(!suppressDisabledCheck && (instance.options.disabled===true || $(this).hasClass("ui-state-disabled"))){ return; } return(typeof handler==="string" ? instance[ handler ]:handler) .apply(instance, arguments); } if(typeof handler!=="string"){ handlerProxy.guid=handler.guid = handler.guid||handlerProxy.guid||$.guid++; } var match=event.match(/^(\w+)\s*(.*)$/), eventName=match[1] + instance.eventNamespace, selector=match[2]; if(selector){ delegateElement.delegate(selector, eventName, handlerProxy); }else{ element.bind(eventName, handlerProxy); }}); }, _off: function(element, eventName){ eventName=(eventName||"").split(" ").join(this.eventNamespace + " ") + this.eventNamespace; element.unbind(eventName).undelegate(eventName); }, _delay: function(handler, delay){ function handlerProxy(){ return(typeof handler==="string" ? instance[ handler ]:handler) .apply(instance, arguments); } var instance=this; return setTimeout(handlerProxy, delay||0); }, _hoverable: function(element){ this.hoverable=this.hoverable.add(element); this._on(element, { mouseenter: function(event){ $(event.currentTarget).addClass("ui-state-hover"); }, mouseleave: function(event){ $(event.currentTarget).removeClass("ui-state-hover"); }}); }, _focusable: function(element){ this.focusable=this.focusable.add(element); this._on(element, { focusin: function(event){ $(event.currentTarget).addClass("ui-state-focus"); }, focusout: function(event){ $(event.currentTarget).removeClass("ui-state-focus"); }}); }, _trigger: function(type, event, data){ var prop, orig, callback=this.options[ type ]; data=data||{}; event=$.Event(event); event.type=(type===this.widgetEventPrefix ? type : this.widgetEventPrefix + type).toLowerCase(); event.target=this.element[ 0 ]; orig=event.originalEvent; if(orig){ for(prop in orig){ if(!(prop in event)){ event[ prop ]=orig[ prop ]; }} } this.element.trigger(event, data); return !($.isFunction(callback) && callback.apply(this.element[0], [ event ].concat(data))===false || event.isDefaultPrevented()); }}; $.each({ show: "fadeIn", hide: "fadeOut" }, function(method, defaultEffect){ $.Widget.prototype[ "_" + method ]=function(element, options, callback){ if(typeof options==="string"){ options={ effect: options };} var hasOptions, effectName = !options ? method : options===true||typeof options==="number" ? defaultEffect : options.effect||defaultEffect; options=options||{}; if(typeof options==="number"){ options={ duration: options };} hasOptions = !$.isEmptyObject(options); options.complete=callback; if(options.delay){ element.delay(options.delay); } if(hasOptions&&$.effects&&$.effects.effect[ effectName ]){ element[ method ](options); }else if(effectName!==method&&element[ effectName ]){ element[ effectName ](options.duration, options.easing, callback); }else{ element.queue(function(next){ $(this)[ method ](); if(callback){ callback.call(element[ 0 ]); } next(); }); }};}); })(jQuery); (function($, undefined){ var mouseHandled=false; $(document).mouseup(function(){ mouseHandled=false; }); $.widget("ui.mouse", { version: "1.10.3", options: { cancel: "input,textarea,button,select,option", distance: 1, delay: 0 }, _mouseInit: function(){ var that=this; this.element .bind("mousedown."+this.widgetName, function(event){ return that._mouseDown(event); }) .bind("click."+this.widgetName, function(event){ if(true===$.data(event.target, that.widgetName + ".preventClickEvent")){ $.removeData(event.target, that.widgetName + ".preventClickEvent"); event.stopImmediatePropagation(); return false; }}); this.started=false; }, _mouseDestroy: function(){ this.element.unbind("."+this.widgetName); if(this._mouseMoveDelegate){ $(document) .unbind("mousemove."+this.widgetName, this._mouseMoveDelegate) .unbind("mouseup."+this.widgetName, this._mouseUpDelegate); }}, _mouseDown: function(event){ if(mouseHandled){ return; } (this._mouseStarted&&this._mouseUp(event)); this._mouseDownEvent=event; var that=this, btnIsLeft=(event.which===1), elIsCancel=(typeof this.options.cancel==="string"&&event.target.nodeName ? $(event.target).closest(this.options.cancel).length:false); if(!btnIsLeft||elIsCancel||!this._mouseCapture(event)){ return true; } this.mouseDelayMet = !this.options.delay; if(!this.mouseDelayMet){ this._mouseDelayTimer=setTimeout(function(){ that.mouseDelayMet=true; }, this.options.delay); } if(this._mouseDistanceMet(event)&&this._mouseDelayMet(event)){ this._mouseStarted=(this._mouseStart(event)!==false); if(!this._mouseStarted){ event.preventDefault(); return true; }} if(true===$.data(event.target, this.widgetName + ".preventClickEvent")){ $.removeData(event.target, this.widgetName + ".preventClickEvent"); } this._mouseMoveDelegate=function(event){ return that._mouseMove(event); }; this._mouseUpDelegate=function(event){ return that._mouseUp(event); }; $(document) .bind("mousemove."+this.widgetName, this._mouseMoveDelegate) .bind("mouseup."+this.widgetName, this._mouseUpDelegate); event.preventDefault(); mouseHandled=true; return true; }, _mouseMove: function(event){ if($.ui.ie&&(!document.documentMode||document.documentMode < 9)&&!event.button){ return this._mouseUp(event); } if(this._mouseStarted){ this._mouseDrag(event); return event.preventDefault(); } if(this._mouseDistanceMet(event)&&this._mouseDelayMet(event)){ this._mouseStarted = (this._mouseStart(this._mouseDownEvent, event)!==false); (this._mouseStarted ? this._mouseDrag(event):this._mouseUp(event)); } return !this._mouseStarted; }, _mouseUp: function(event){ $(document) .unbind("mousemove."+this.widgetName, this._mouseMoveDelegate) .unbind("mouseup."+this.widgetName, this._mouseUpDelegate); if(this._mouseStarted){ this._mouseStarted=false; if(event.target===this._mouseDownEvent.target){ $.data(event.target, this.widgetName + ".preventClickEvent", true); } this._mouseStop(event); } return false; }, _mouseDistanceMet: function(event){ return (Math.max(Math.abs(this._mouseDownEvent.pageX - event.pageX), Math.abs(this._mouseDownEvent.pageY - event.pageY) ) >=this.options.distance ); }, _mouseDelayMet: function(){ return this.mouseDelayMet; }, _mouseStart: function(){}, _mouseDrag: function(){}, _mouseStop: function(){}, _mouseCapture: function(){ return true; }}); })(jQuery); (function($, undefined){ $.widget("ui.draggable", $.ui.mouse, { version: "1.10.3", widgetEventPrefix: "drag", options: { addClasses: true, appendTo: "parent", axis: false, connectToSortable: false, containment: false, cursor: "auto", cursorAt: false, grid: false, handle: false, helper: "original", iframeFix: false, opacity: false, refreshPositions: false, revert: false, revertDuration: 500, scope: "default", scroll: true, scrollSensitivity: 20, scrollSpeed: 20, snap: false, snapMode: "both", snapTolerance: 20, stack: false, zIndex: false, drag: null, start: null, stop: null }, _create: function(){ if(this.options.helper==="original"&&!(/^(?:r|a|f)/).test(this.element.css("position"))){ this.element[0].style.position="relative"; } if(this.options.addClasses){ this.element.addClass("ui-draggable"); } if(this.options.disabled){ this.element.addClass("ui-draggable-disabled"); } this._mouseInit(); }, _destroy: function(){ this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"); this._mouseDestroy(); }, _mouseCapture: function(event){ var o=this.options; if(this.helper||o.disabled||$(event.target).closest(".ui-resizable-handle").length > 0){ return false; } this.handle=this._getHandle(event); if(!this.handle){ return false; } $(o.iframeFix===true ? "iframe":o.iframeFix).each(function(){ $("
") .css({ width: this.offsetWidth+"px", height: this.offsetHeight+"px", position: "absolute", opacity: "0.001", zIndex: 1000 }) .css($(this).offset()) .appendTo("body"); }); return true; }, _mouseStart: function(event){ var o=this.options; this.helper=this._createHelper(event); this.helper.addClass("ui-draggable-dragging"); this._cacheHelperProportions(); if($.ui.ddmanager){ $.ui.ddmanager.current=this; } this._cacheMargins(); this.cssPosition=this.helper.css("position"); this.scrollParent=this.helper.scrollParent(); this.offsetParent=this.helper.offsetParent(); this.offsetParentCssPosition=this.offsetParent.css("position"); this.offset=this.positionAbs=this.element.offset(); this.offset={ top: this.offset.top - this.margins.top, left: this.offset.left - this.margins.left }; this.offset.scroll=false; $.extend(this.offset, { click: { left: event.pageX - this.offset.left, top: event.pageY - this.offset.top }, parent: this._getParentOffset(), relative: this._getRelativeOffset() }); this.originalPosition=this.position=this._generatePosition(event); this.originalPageX=event.pageX; this.originalPageY=event.pageY; (o.cursorAt&&this._adjustOffsetFromHelper(o.cursorAt)); this._setContainment(); if(this._trigger("start", event)===false){ this._clear(); return false; } this._cacheHelperProportions(); if($.ui.ddmanager&&!o.dropBehaviour){ $.ui.ddmanager.prepareOffsets(this, event); } this._mouseDrag(event, true); if($.ui.ddmanager){ $.ui.ddmanager.dragStart(this, event); } return true; }, _mouseDrag: function(event, noPropagation){ if(this.offsetParentCssPosition==="fixed"){ this.offset.parent=this._getParentOffset(); } this.position=this._generatePosition(event); this.positionAbs=this._convertPositionTo("absolute"); if(!noPropagation){ var ui=this._uiHash(); if(this._trigger("drag", event, ui)===false){ this._mouseUp({}); return false; } this.position=ui.position; } if(!this.options.axis||this.options.axis!=="y"){ this.helper[0].style.left=this.position.left+"px"; } if(!this.options.axis||this.options.axis!=="x"){ this.helper[0].style.top=this.position.top+"px"; } if($.ui.ddmanager){ $.ui.ddmanager.drag(this, event); } return false; }, _mouseStop: function(event){ var that=this, dropped=false; if($.ui.ddmanager&&!this.options.dropBehaviour){ dropped=$.ui.ddmanager.drop(this, event); } if(this.dropped){ dropped=this.dropped; this.dropped=false; } if(this.options.helper==="original"&&!$.contains(this.element[ 0 ].ownerDocument, this.element[ 0 ])){ return false; } if((this.options.revert==="invalid"&&!dropped)||(this.options.revert==="valid"&&dropped)||this.options.revert===true||($.isFunction(this.options.revert)&&this.options.revert.call(this.element, dropped))){ $(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function(){ if(that._trigger("stop", event)!==false){ that._clear(); }}); }else{ if(this._trigger("stop", event)!==false){ this._clear(); }} return false; }, _mouseUp: function(event){ $("div.ui-draggable-iframeFix").each(function(){ this.parentNode.removeChild(this); }); if($.ui.ddmanager){ $.ui.ddmanager.dragStop(this, event); } return $.ui.mouse.prototype._mouseUp.call(this, event); }, cancel: function(){ if(this.helper.is(".ui-draggable-dragging")){ this._mouseUp({}); }else{ this._clear(); } return this; }, _getHandle: function(event){ return this.options.handle ? !!$(event.target).closest(this.element.find(this.options.handle)).length : true; }, _createHelper: function(event){ var o=this.options, helper=$.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event])):(o.helper==="clone" ? this.element.clone().removeAttr("id"):this.element); if(!helper.parents("body").length){ helper.appendTo((o.appendTo==="parent" ? this.element[0].parentNode:o.appendTo)); } if(helper[0]!==this.element[0]&&!(/(fixed|absolute)/).test(helper.css("position"))){ helper.css("position", "absolute"); } return helper; }, _adjustOffsetFromHelper: function(obj){ if(typeof obj==="string"){ obj=obj.split(" "); } if($.isArray(obj)){ obj={left: +obj[0], top: +obj[1]||0};} if("left" in obj){ this.offset.click.left=obj.left + this.margins.left; } if("right" in obj){ this.offset.click.left=this.helperProportions.width - obj.right + this.margins.left; } if("top" in obj){ this.offset.click.top=obj.top + this.margins.top; } if("bottom" in obj){ this.offset.click.top=this.helperProportions.height - obj.bottom + this.margins.top; }}, _getParentOffset: function(){ var po=this.offsetParent.offset(); if(this.cssPosition==="absolute"&&this.scrollParent[0]!==document&&$.contains(this.scrollParent[0], this.offsetParent[0])){ po.left +=this.scrollParent.scrollLeft(); po.top +=this.scrollParent.scrollTop(); } if((this.offsetParent[0]===document.body) || (this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()==="html"&&$.ui.ie)){ po={ top: 0, left: 0 };} return { top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10)||0), left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"),10)||0) };}, _getRelativeOffset: function(){ if(this.cssPosition==="relative"){ var p=this.element.position(); return { top: p.top - (parseInt(this.helper.css("top"),10)||0) + this.scrollParent.scrollTop(), left: p.left - (parseInt(this.helper.css("left"),10)||0) + this.scrollParent.scrollLeft() };}else{ return { top: 0, left: 0 };}}, _cacheMargins: function(){ this.margins={ left: (parseInt(this.element.css("marginLeft"),10)||0), top: (parseInt(this.element.css("marginTop"),10)||0), right: (parseInt(this.element.css("marginRight"),10)||0), bottom: (parseInt(this.element.css("marginBottom"),10)||0) };}, _cacheHelperProportions: function(){ this.helperProportions={ width: this.helper.outerWidth(), height: this.helper.outerHeight() };}, _setContainment: function(){ var over, c, ce, o=this.options; if(!o.containment){ this.containment=null; return; } if(o.containment==="window"){ this.containment=[ $(window).scrollLeft() - this.offset.relative.left - this.offset.parent.left, $(window).scrollTop() - this.offset.relative.top - this.offset.parent.top, $(window).scrollLeft() + $(window).width() - this.helperProportions.width - this.margins.left, $(window).scrollTop() +($(window).height()||document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top ]; return; } if(o.containment==="document"){ this.containment=[ 0, 0, $(document).width() - this.helperProportions.width - this.margins.left, ($(document).height()||document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top ]; return; } if(o.containment.constructor===Array){ this.containment=o.containment; return; } if(o.containment==="parent"){ o.containment=this.helper[ 0 ].parentNode; } c=$(o.containment); ce=c[ 0 ]; if(!ce){ return; } over=c.css("overflow")!=="hidden"; this.containment=[ (parseInt(c.css("borderLeftWidth"), 10)||0) +(parseInt(c.css("paddingLeft"), 10)||0), (parseInt(c.css("borderTopWidth"), 10)||0) +(parseInt(c.css("paddingTop"), 10)||0) , (over ? Math.max(ce.scrollWidth, ce.offsetWidth):ce.offsetWidth) -(parseInt(c.css("borderRightWidth"), 10)||0) -(parseInt(c.css("paddingRight"), 10)||0) - this.helperProportions.width - this.margins.left - this.margins.right, (over ? Math.max(ce.scrollHeight, ce.offsetHeight):ce.offsetHeight) -(parseInt(c.css("borderBottomWidth"), 10)||0) -(parseInt(c.css("paddingBottom"), 10)||0) - this.helperProportions.height - this.margins.top - this.margins.bottom ]; this.relative_container=c; }, _convertPositionTo: function(d, pos){ if(!pos){ pos=this.position; } var mod=d==="absolute" ? 1:-1, scroll=this.cssPosition==="absolute"&&!(this.scrollParent[ 0 ]!==document&&$.contains(this.scrollParent[ 0 ], this.offsetParent[ 0 ])) ? this.offsetParent:this.scrollParent; if(!this.offset.scroll){ this.offset.scroll={top:scroll.scrollTop(), left:scroll.scrollLeft()};} return { top: ( pos.top + this.offset.relative.top * mod + this.offset.parent.top * mod - (( this.cssPosition==="fixed" ? -this.scrollParent.scrollTop():this.offset.scroll.top) * mod) ), left: ( pos.left + this.offset.relative.left * mod + this.offset.parent.left * mod - (( this.cssPosition==="fixed" ? -this.scrollParent.scrollLeft():this.offset.scroll.left) * mod) ) };}, _generatePosition: function(event){ var containment, co, top, left, o=this.options, scroll=this.cssPosition==="absolute"&&!(this.scrollParent[ 0 ]!==document&&$.contains(this.scrollParent[ 0 ], this.offsetParent[ 0 ])) ? this.offsetParent:this.scrollParent, pageX=event.pageX, pageY=event.pageY; if(!this.offset.scroll){ this.offset.scroll={top:scroll.scrollTop(), left:scroll.scrollLeft()};} if(this.originalPosition){ if(this.containment){ if(this.relative_container){ co=this.relative_container.offset(); containment=[ this.containment[ 0 ] + co.left, this.containment[ 1 ] + co.top, this.containment[ 2 ] + co.left, this.containment[ 3 ] + co.top ]; }else{ containment=this.containment; } if(event.pageX - this.offset.click.left < containment[0]){ pageX=containment[0] + this.offset.click.left; } if(event.pageY - this.offset.click.top < containment[1]){ pageY=containment[1] + this.offset.click.top; } if(event.pageX - this.offset.click.left > containment[2]){ pageX=containment[2] + this.offset.click.left; } if(event.pageY - this.offset.click.top > containment[3]){ pageY=containment[3] + this.offset.click.top; }} if(o.grid){ top=o.grid[1] ? this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1]:this.originalPageY; pageY=containment ? ((top - this.offset.click.top >=containment[1]||top - this.offset.click.top > containment[3]) ? top:((top - this.offset.click.top >=containment[1]) ? top - o.grid[1]:top + o.grid[1])):top; left=o.grid[0] ? this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0]:this.originalPageX; pageX=containment ? ((left - this.offset.click.left >=containment[0]||left - this.offset.click.left > containment[2]) ? left:((left - this.offset.click.left >=containment[0]) ? left - o.grid[0]:left + o.grid[0])):left; }} return { top: ( pageY - this.offset.click.top - this.offset.relative.top - this.offset.parent.top + (this.cssPosition==="fixed" ? -this.scrollParent.scrollTop():this.offset.scroll.top) ), left: ( pageX - this.offset.click.left - this.offset.relative.left - this.offset.parent.left + (this.cssPosition==="fixed" ? -this.scrollParent.scrollLeft():this.offset.scroll.left) ) };}, _clear: function(){ this.helper.removeClass("ui-draggable-dragging"); if(this.helper[0]!==this.element[0]&&!this.cancelHelperRemoval){ this.helper.remove(); } this.helper=null; this.cancelHelperRemoval=false; }, _trigger: function(type, event, ui){ ui=ui||this._uiHash(); $.ui.plugin.call(this, type, [event, ui]); if(type==="drag"){ this.positionAbs=this._convertPositionTo("absolute"); } return $.Widget.prototype._trigger.call(this, type, event, ui); }, plugins: {}, _uiHash: function(){ return { helper: this.helper, position: this.position, originalPosition: this.originalPosition, offset: this.positionAbs };}}); $.ui.plugin.add("draggable", "connectToSortable", { start: function(event, ui){ var inst=$(this).data("ui-draggable"), o=inst.options, uiSortable=$.extend({}, ui, { item: inst.element }); inst.sortables=[]; $(o.connectToSortable).each(function(){ var sortable=$.data(this, "ui-sortable"); if(sortable&&!sortable.options.disabled){ inst.sortables.push({ instance: sortable, shouldRevert: sortable.options.revert }); sortable.refreshPositions(); sortable._trigger("activate", event, uiSortable); }}); }, stop: function(event, ui){ var inst=$(this).data("ui-draggable"), uiSortable=$.extend({}, ui, { item: inst.element }); $.each(inst.sortables, function(){ if(this.instance.isOver){ this.instance.isOver=0; inst.cancelHelperRemoval=true; this.instance.cancelHelperRemoval=false; if(this.shouldRevert){ this.instance.options.revert=this.shouldRevert; } this.instance._mouseStop(event); this.instance.options.helper=this.instance.options._helper; if(inst.options.helper==="original"){ this.instance.currentItem.css({ top: "auto", left: "auto" }); }}else{ this.instance.cancelHelperRemoval=false; this.instance._trigger("deactivate", event, uiSortable); }}); }, drag: function(event, ui){ var inst=$(this).data("ui-draggable"), that=this; $.each(inst.sortables, function(){ var innermostIntersecting=false, thisSortable=this; this.instance.positionAbs=inst.positionAbs; this.instance.helperProportions=inst.helperProportions; this.instance.offset.click=inst.offset.click; if(this.instance._intersectsWith(this.instance.containerCache)){ innermostIntersecting=true; $.each(inst.sortables, function (){ this.instance.positionAbs=inst.positionAbs; this.instance.helperProportions=inst.helperProportions; this.instance.offset.click=inst.offset.click; if(this!==thisSortable && this.instance._intersectsWith(this.instance.containerCache) && $.contains(thisSortable.instance.element[0], this.instance.element[0]) ){ innermostIntersecting=false; } return innermostIntersecting; }); } if(innermostIntersecting){ if(!this.instance.isOver){ this.instance.isOver=1; this.instance.currentItem=$(that).clone().removeAttr("id").appendTo(this.instance.element).data("ui-sortable-item", true); this.instance.options._helper=this.instance.options.helper; this.instance.options.helper=function(){ return ui.helper[0]; }; event.target=this.instance.currentItem[0]; this.instance._mouseCapture(event, true); this.instance._mouseStart(event, true, true); this.instance.offset.click.top=inst.offset.click.top; this.instance.offset.click.left=inst.offset.click.left; this.instance.offset.parent.left -=inst.offset.parent.left - this.instance.offset.parent.left; this.instance.offset.parent.top -=inst.offset.parent.top - this.instance.offset.parent.top; inst._trigger("toSortable", event); inst.dropped=this.instance.element; inst.currentItem=inst.element; this.instance.fromOutside=inst; } if(this.instance.currentItem){ this.instance._mouseDrag(event); }}else{ if(this.instance.isOver){ this.instance.isOver=0; this.instance.cancelHelperRemoval=true; this.instance.options.revert=false; this.instance._trigger("out", event, this.instance._uiHash(this.instance)); this.instance._mouseStop(event, true); this.instance.options.helper=this.instance.options._helper; this.instance.currentItem.remove(); if(this.instance.placeholder){ this.instance.placeholder.remove(); } inst._trigger("fromSortable", event); inst.dropped=false; }} }); }}); $.ui.plugin.add("draggable", "cursor", { start: function(){ var t=$("body"), o=$(this).data("ui-draggable").options; if(t.css("cursor")){ o._cursor=t.css("cursor"); } t.css("cursor", o.cursor); }, stop: function(){ var o=$(this).data("ui-draggable").options; if(o._cursor){ $("body").css("cursor", o._cursor); }} }); $.ui.plugin.add("draggable", "opacity", { start: function(event, ui){ var t=$(ui.helper), o=$(this).data("ui-draggable").options; if(t.css("opacity")){ o._opacity=t.css("opacity"); } t.css("opacity", o.opacity); }, stop: function(event, ui){ var o=$(this).data("ui-draggable").options; if(o._opacity){ $(ui.helper).css("opacity", o._opacity); }} }); $.ui.plugin.add("draggable", "scroll", { start: function(){ var i=$(this).data("ui-draggable"); if(i.scrollParent[0]!==document&&i.scrollParent[0].tagName!=="HTML"){ i.overflowOffset=i.scrollParent.offset(); }}, drag: function(event){ var i=$(this).data("ui-draggable"), o=i.options, scrolled=false; if(i.scrollParent[0]!==document&&i.scrollParent[0].tagName!=="HTML"){ if(!o.axis||o.axis!=="x"){ if((i.overflowOffset.top + i.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity){ i.scrollParent[0].scrollTop=scrolled=i.scrollParent[0].scrollTop + o.scrollSpeed; }else if(event.pageY - i.overflowOffset.top < o.scrollSensitivity){ i.scrollParent[0].scrollTop=scrolled=i.scrollParent[0].scrollTop - o.scrollSpeed; }} if(!o.axis||o.axis!=="y"){ if((i.overflowOffset.left + i.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity){ i.scrollParent[0].scrollLeft=scrolled=i.scrollParent[0].scrollLeft + o.scrollSpeed; }else if(event.pageX - i.overflowOffset.left < o.scrollSensitivity){ i.scrollParent[0].scrollLeft=scrolled=i.scrollParent[0].scrollLeft - o.scrollSpeed; }} }else{ if(!o.axis||o.axis!=="x"){ if(event.pageY - $(document).scrollTop() < o.scrollSensitivity){ scrolled=$(document).scrollTop($(document).scrollTop() - o.scrollSpeed); }else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity){ scrolled=$(document).scrollTop($(document).scrollTop() + o.scrollSpeed); }} if(!o.axis||o.axis!=="y"){ if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity){ scrolled=$(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed); }else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity){ scrolled=$(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed); }} } if(scrolled!==false&&$.ui.ddmanager&&!o.dropBehaviour){ $.ui.ddmanager.prepareOffsets(i, event); }} }); $.ui.plugin.add("draggable", "snap", { start: function(){ var i=$(this).data("ui-draggable"), o=i.options; i.snapElements=[]; $(o.snap.constructor!==String ?(o.snap.items||":data(ui-draggable)"):o.snap).each(function(){ var $t=$(this), $o=$t.offset(); if(this!==i.element[0]){ i.snapElements.push({ item: this, width: $t.outerWidth(), height: $t.outerHeight(), top: $o.top, left: $o.left }); }}); }, drag: function(event, ui){ var ts, bs, ls, rs, l, r, t, b, i, first, inst=$(this).data("ui-draggable"), o=inst.options, d=o.snapTolerance, x1=ui.offset.left, x2=x1 + inst.helperProportions.width, y1=ui.offset.top, y2=y1 + inst.helperProportions.height; for (i=inst.snapElements.length - 1; i >=0; i--){ l=inst.snapElements[i].left; r=l + inst.snapElements[i].width; t=inst.snapElements[i].top; b=t + inst.snapElements[i].height; if(x2 < l - d||x1 > r + d||y2 < t - d||y1 > b + d||!$.contains(inst.snapElements[ i ].item.ownerDocument, inst.snapElements[ i ].item)){ if(inst.snapElements[i].snapping){ (inst.options.snap.release&&inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item }))); } inst.snapElements[i].snapping=false; continue; } if(o.snapMode!=="inner"){ ts=Math.abs(t - y2) <=d; bs=Math.abs(b - y1) <=d; ls=Math.abs(l - x2) <=d; rs=Math.abs(r - x1) <=d; if(ts){ ui.position.top=inst._convertPositionTo("relative", { top: t - inst.helperProportions.height, left: 0 }).top - inst.margins.top; } if(bs){ ui.position.top=inst._convertPositionTo("relative", { top: b, left: 0 }).top - inst.margins.top; } if(ls){ ui.position.left=inst._convertPositionTo("relative", { top: 0, left: l - inst.helperProportions.width }).left - inst.margins.left; } if(rs){ ui.position.left=inst._convertPositionTo("relative", { top: 0, left: r }).left - inst.margins.left; }} first=(ts||bs||ls||rs); if(o.snapMode!=="outer"){ ts=Math.abs(t - y1) <=d; bs=Math.abs(b - y2) <=d; ls=Math.abs(l - x1) <=d; rs=Math.abs(r - x2) <=d; if(ts){ ui.position.top=inst._convertPositionTo("relative", { top: t, left: 0 }).top - inst.margins.top; } if(bs){ ui.position.top=inst._convertPositionTo("relative", { top: b - inst.helperProportions.height, left: 0 }).top - inst.margins.top; } if(ls){ ui.position.left=inst._convertPositionTo("relative", { top: 0, left: l }).left - inst.margins.left; } if(rs){ ui.position.left=inst._convertPositionTo("relative", { top: 0, left: r - inst.helperProportions.width }).left - inst.margins.left; }} if(!inst.snapElements[i].snapping&&(ts||bs||ls||rs||first)){ (inst.options.snap.snap&&inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item }))); } inst.snapElements[i].snapping=(ts||bs||ls||rs||first); }} }); $.ui.plugin.add("draggable", "stack", { start: function(){ var min, o=this.data("ui-draggable").options, group=$.makeArray($(o.stack)).sort(function(a,b){ return (parseInt($(a).css("zIndex"),10)||0) - (parseInt($(b).css("zIndex"),10)||0); }); if(!group.length){ return; } min=parseInt($(group[0]).css("zIndex"), 10)||0; $(group).each(function(i){ $(this).css("zIndex", min + i); }); this.css("zIndex", (min + group.length)); }}); $.ui.plugin.add("draggable", "zIndex", { start: function(event, ui){ var t=$(ui.helper), o=$(this).data("ui-draggable").options; if(t.css("zIndex")){ o._zIndex=t.css("zIndex"); } t.css("zIndex", o.zIndex); }, stop: function(event, ui){ var o=$(this).data("ui-draggable").options; if(o._zIndex){ $(ui.helper).css("zIndex", o._zIndex); }} }); })(jQuery); (function($, undefined){ function isOverAxis(x, reference, size){ return(x > reference)&&(x <(reference + size)); } $.widget("ui.droppable", { version: "1.10.3", widgetEventPrefix: "drop", options: { accept: "*", activeClass: false, addClasses: true, greedy: false, hoverClass: false, scope: "default", tolerance: "intersect", activate: null, deactivate: null, drop: null, out: null, over: null }, _create: function(){ var o=this.options, accept=o.accept; this.isover=false; this.isout=true; this.accept=$.isFunction(accept) ? accept:function(d){ return d.is(accept); }; this.proportions={ width: this.element[0].offsetWidth, height: this.element[0].offsetHeight }; $.ui.ddmanager.droppables[o.scope]=$.ui.ddmanager.droppables[o.scope]||[]; $.ui.ddmanager.droppables[o.scope].push(this); (o.addClasses&&this.element.addClass("ui-droppable")); }, _destroy: function(){ var i=0, drop=$.ui.ddmanager.droppables[this.options.scope]; for(; i < drop.length; i++){ if(drop[i]===this){ drop.splice(i, 1); }} this.element.removeClass("ui-droppable ui-droppable-disabled"); }, _setOption: function(key, value){ if(key==="accept"){ this.accept=$.isFunction(value) ? value:function(d){ return d.is(value); };} $.Widget.prototype._setOption.apply(this, arguments); }, _activate: function(event){ var draggable=$.ui.ddmanager.current; if(this.options.activeClass){ this.element.addClass(this.options.activeClass); } if(draggable){ this._trigger("activate", event, this.ui(draggable)); }}, _deactivate: function(event){ var draggable=$.ui.ddmanager.current; if(this.options.activeClass){ this.element.removeClass(this.options.activeClass); } if(draggable){ this._trigger("deactivate", event, this.ui(draggable)); }}, _over: function(event){ var draggable=$.ui.ddmanager.current; if(!draggable||(draggable.currentItem||draggable.element)[0]===this.element[0]){ return; } if(this.accept.call(this.element[0],(draggable.currentItem||draggable.element))){ if(this.options.hoverClass){ this.element.addClass(this.options.hoverClass); } this._trigger("over", event, this.ui(draggable)); }}, _out: function(event){ var draggable=$.ui.ddmanager.current; if(!draggable||(draggable.currentItem||draggable.element)[0]===this.element[0]){ return; } if(this.accept.call(this.element[0],(draggable.currentItem||draggable.element))){ if(this.options.hoverClass){ this.element.removeClass(this.options.hoverClass); } this._trigger("out", event, this.ui(draggable)); }}, _drop: function(event,custom){ var draggable=custom||$.ui.ddmanager.current, childrenIntersection=false; if(!draggable||(draggable.currentItem||draggable.element)[0]===this.element[0]){ return false; } this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){ var inst=$.data(this, "ui-droppable"); if(inst.options.greedy && !inst.options.disabled && inst.options.scope===draggable.options.scope && inst.accept.call(inst.element[0], (draggable.currentItem||draggable.element)) && $.ui.intersect(draggable, $.extend(inst, { offset: inst.element.offset() }), inst.options.tolerance) ){ childrenIntersection=true; return false; }}); if(childrenIntersection){ return false; } if(this.accept.call(this.element[0],(draggable.currentItem||draggable.element))){ if(this.options.activeClass){ this.element.removeClass(this.options.activeClass); } if(this.options.hoverClass){ this.element.removeClass(this.options.hoverClass); } this._trigger("drop", event, this.ui(draggable)); return this.element; } return false; }, ui: function(c){ return { draggable: (c.currentItem||c.element), helper: c.helper, position: c.position, offset: c.positionAbs };}}); $.ui.intersect=function(draggable, droppable, toleranceMode){ if(!droppable.offset){ return false; } var draggableLeft, draggableTop, x1=(draggable.positionAbs||draggable.position.absolute).left, x2=x1 + draggable.helperProportions.width, y1=(draggable.positionAbs||draggable.position.absolute).top, y2=y1 + draggable.helperProportions.height, l=droppable.offset.left, r=l + droppable.proportions.width, t=droppable.offset.top, b=t + droppable.proportions.height; switch (toleranceMode){ case "fit": return (l <=x1&&x2 <=r&&t <=y1&&y2 <=b); case "intersect": return (l < x1 + (draggable.helperProportions.width / 2) && x2 - (draggable.helperProportions.width / 2) < r && t < y1 + (draggable.helperProportions.height / 2) && y2 - (draggable.helperProportions.height / 2) < b); case "pointer": draggableLeft=((draggable.positionAbs||draggable.position.absolute).left + (draggable.clickOffset||draggable.offset.click).left); draggableTop=((draggable.positionAbs||draggable.position.absolute).top + (draggable.clickOffset||draggable.offset.click).top); return isOverAxis(draggableTop, t, droppable.proportions.height)&&isOverAxis(draggableLeft, l, droppable.proportions.width); case "touch": return ( (y1 >=t&&y1 <=b) || (y2 >=t&&y2 <=b) || (y1 < t&&y2 > b) )&&( (x1 >=l&&x1 <=r) || (x2 >=l&&x2 <=r) || (x1 < l&&x2 > r) ); default: return false; }}; $.ui.ddmanager={ current: null, droppables: { "default": [] }, prepareOffsets: function(t, event){ var i, j, m=$.ui.ddmanager.droppables[t.options.scope]||[], type=event ? event.type:null, list=(t.currentItem||t.element).find(":data(ui-droppable)").addBack(); droppablesLoop: for (i=0; i < m.length; i++){ if(m[i].options.disabled||(t&&!m[i].accept.call(m[i].element[0],(t.currentItem||t.element)))){ continue; } for (j=0; j < list.length; j++){ if(list[j]===m[i].element[0]){ m[i].proportions.height=0; continue droppablesLoop; }} m[i].visible=m[i].element.css("display")!=="none"; if(!m[i].visible){ continue; } if(type==="mousedown"){ m[i]._activate.call(m[i], event); } m[i].offset=m[i].element.offset(); m[i].proportions={ width: m[i].element[0].offsetWidth, height: m[i].element[0].offsetHeight };}}, drop: function(draggable, event){ var dropped=false; $.each(($.ui.ddmanager.droppables[draggable.options.scope]||[]).slice(), function(){ if(!this.options){ return; } if(!this.options.disabled&&this.visible&&$.ui.intersect(draggable, this, this.options.tolerance)){ dropped=this._drop.call(this, event)||dropped; } if(!this.options.disabled&&this.visible&&this.accept.call(this.element[0],(draggable.currentItem||draggable.element))){ this.isout=true; this.isover=false; this._deactivate.call(this, event); }}); return dropped; }, dragStart: function(draggable, event){ draggable.element.parentsUntil("body").bind("scroll.droppable", function(){ if(!draggable.options.refreshPositions){ $.ui.ddmanager.prepareOffsets(draggable, event); }}); }, drag: function(draggable, event){ if(draggable.options.refreshPositions){ $.ui.ddmanager.prepareOffsets(draggable, event); } $.each($.ui.ddmanager.droppables[draggable.options.scope]||[], function(){ if(this.options.disabled||this.greedyChild||!this.visible){ return; } var parentInstance, scope, parent, intersects=$.ui.intersect(draggable, this, this.options.tolerance), c = !intersects&&this.isover ? "isout":(intersects&&!this.isover ? "isover":null); if(!c){ return; } if(this.options.greedy){ scope=this.options.scope; parent=this.element.parents(":data(ui-droppable)").filter(function (){ return $.data(this, "ui-droppable").options.scope===scope; }); if(parent.length){ parentInstance=$.data(parent[0], "ui-droppable"); parentInstance.greedyChild=(c==="isover"); }} if(parentInstance&&c==="isover"){ parentInstance.isover=false; parentInstance.isout=true; parentInstance._out.call(parentInstance, event); } this[c]=true; this[c==="isout" ? "isover":"isout"]=false; this[c==="isover" ? "_over":"_out"].call(this, event); if(parentInstance&&c==="isout"){ parentInstance.isout=false; parentInstance.isover=true; parentInstance._over.call(parentInstance, event); }}); }, dragStop: function(draggable, event){ draggable.element.parentsUntil("body").unbind("scroll.droppable"); if(!draggable.options.refreshPositions){ $.ui.ddmanager.prepareOffsets(draggable, event); }} };})(jQuery); (function($, undefined){ function num(v){ return parseInt(v, 10)||0; } function isNumber(value){ return !isNaN(parseInt(value, 10)); } $.widget("ui.resizable", $.ui.mouse, { version: "1.10.3", widgetEventPrefix: "resize", options: { alsoResize: false, animate: false, animateDuration: "slow", animateEasing: "swing", aspectRatio: false, autoHide: false, containment: false, ghost: false, grid: false, handles: "e,s,se", helper: false, maxHeight: null, maxWidth: null, minHeight: 10, minWidth: 10, zIndex: 90, resize: null, start: null, stop: null }, _create: function(){ var n, i, handle, axis, hname, that=this, o=this.options; this.element.addClass("ui-resizable"); $.extend(this, { _aspectRatio: !!(o.aspectRatio), aspectRatio: o.aspectRatio, originalElement: this.element, _proportionallyResizeElements: [], _helper: o.helper||o.ghost||o.animate ? o.helper||"ui-resizable-helper":null }); if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){ this.element.wrap($("
").css({ position: this.element.css("position"), width: this.element.outerWidth(), height: this.element.outerHeight(), top: this.element.css("top"), left: this.element.css("left") }) ); this.element=this.element.parent().data("ui-resizable", this.element.data("ui-resizable") ); this.elementIsWrapper=true; this.element.css({ marginLeft: this.originalElement.css("marginLeft"), marginTop: this.originalElement.css("marginTop"), marginRight: this.originalElement.css("marginRight"), marginBottom: this.originalElement.css("marginBottom") }); this.originalElement.css({ marginLeft: 0, marginTop: 0, marginRight: 0, marginBottom: 0}); this.originalResizeStyle=this.originalElement.css("resize"); this.originalElement.css("resize", "none"); this._proportionallyResizeElements.push(this.originalElement.css({ position: "static", zoom: 1, display: "block" })); this.originalElement.css({ margin: this.originalElement.css("margin") }); this._proportionallyResize(); } this.handles=o.handles||(!$(".ui-resizable-handle", this.element).length ? "e,s,se":{ n: ".ui-resizable-n", e: ".ui-resizable-e", s: ".ui-resizable-s", w: ".ui-resizable-w", se: ".ui-resizable-se", sw: ".ui-resizable-sw", ne: ".ui-resizable-ne", nw: ".ui-resizable-nw" }); if(this.handles.constructor===String){ if(this.handles==="all"){ this.handles="n,e,s,w,se,sw,ne,nw"; } n=this.handles.split(","); this.handles={}; for(i=0; i < n.length; i++){ handle=$.trim(n[i]); hname="ui-resizable-"+handle; axis=$("
"); axis.css({ zIndex: o.zIndex }); if("se"===handle){ axis.addClass("ui-icon ui-icon-gripsmall-diagonal-se"); } this.handles[handle]=".ui-resizable-"+handle; this.element.append(axis); }} this._renderAxis=function(target){ var i, axis, padPos, padWrapper; target=target||this.element; for(i in this.handles){ if(this.handles[i].constructor===String){ this.handles[i]=$(this.handles[i], this.element).show(); } if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){ axis=$(this.handles[i], this.element); padWrapper=/sw|ne|nw|se|n|s/.test(i) ? axis.outerHeight():axis.outerWidth(); padPos=[ "padding", /ne|nw|n/.test(i) ? "Top" : /se|sw|s/.test(i) ? "Bottom" : /^e$/.test(i) ? "Right":"Left" ].join(""); target.css(padPos, padWrapper); this._proportionallyResize(); } if(!$(this.handles[i]).length){ continue; }} }; this._renderAxis(this.element); this._handles=$(".ui-resizable-handle", this.element) .disableSelection(); this._handles.mouseover(function(){ if(!that.resizing){ if(this.className){ axis=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i); } that.axis=axis&&axis[1] ? axis[1]:"se"; }}); if(o.autoHide){ this._handles.hide(); $(this.element) .addClass("ui-resizable-autohide") .mouseenter(function(){ if(o.disabled){ return; } $(this).removeClass("ui-resizable-autohide"); that._handles.show(); }) .mouseleave(function(){ if(o.disabled){ return; } if(!that.resizing){ $(this).addClass("ui-resizable-autohide"); that._handles.hide(); }}); } this._mouseInit(); }, _destroy: function(){ this._mouseDestroy(); var wrapper, _destroy=function(exp){ $(exp).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing") .removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove(); }; if(this.elementIsWrapper){ _destroy(this.element); wrapper=this.element; this.originalElement.css({ position: wrapper.css("position"), width: wrapper.outerWidth(), height: wrapper.outerHeight(), top: wrapper.css("top"), left: wrapper.css("left") }).insertAfter(wrapper); wrapper.remove(); } this.originalElement.css("resize", this.originalResizeStyle); _destroy(this.originalElement); return this; }, _mouseCapture: function(event){ var i, handle, capture=false; for (i in this.handles){ handle=$(this.handles[i])[0]; if(handle===event.target||$.contains(handle, event.target)){ capture=true; }} return !this.options.disabled&&capture; }, _mouseStart: function(event){ var curleft, curtop, cursor, o=this.options, iniPos=this.element.position(), el=this.element; this.resizing=true; if((/absolute/).test(el.css("position"))){ el.css({ position: "absolute", top: el.css("top"), left: el.css("left") }); }else if(el.is(".ui-draggable")){ el.css({ position: "absolute", top: iniPos.top, left: iniPos.left }); } this._renderProxy(); curleft=num(this.helper.css("left")); curtop=num(this.helper.css("top")); if(o.containment){ curleft +=$(o.containment).scrollLeft()||0; curtop +=$(o.containment).scrollTop()||0; } this.offset=this.helper.offset(); this.position={ left: curleft, top: curtop }; this.size=this._helper ? { width: el.outerWidth(), height: el.outerHeight() }:{ width: el.width(), height: el.height() }; this.originalSize=this._helper ? { width: el.outerWidth(), height: el.outerHeight() }:{ width: el.width(), height: el.height() }; this.originalPosition={ left: curleft, top: curtop }; this.sizeDiff={ width: el.outerWidth() - el.width(), height: el.outerHeight() - el.height() }; this.originalMousePosition={ left: event.pageX, top: event.pageY }; this.aspectRatio=(typeof o.aspectRatio==="number") ? o.aspectRatio:((this.originalSize.width / this.originalSize.height)||1); cursor=$(".ui-resizable-" + this.axis).css("cursor"); $("body").css("cursor", cursor==="auto" ? this.axis + "-resize":cursor); el.addClass("ui-resizable-resizing"); this._propagate("start", event); return true; }, _mouseDrag: function(event){ var data, el=this.helper, props={}, smp=this.originalMousePosition, a=this.axis, prevTop=this.position.top, prevLeft=this.position.left, prevWidth=this.size.width, prevHeight=this.size.height, dx=(event.pageX-smp.left)||0, dy=(event.pageY-smp.top)||0, trigger=this._change[a]; if(!trigger){ return false; } data=trigger.apply(this, [event, dx, dy]); this._updateVirtualBoundaries(event.shiftKey); if(this._aspectRatio||event.shiftKey){ data=this._updateRatio(data, event); } data=this._respectSize(data, event); this._updateCache(data); this._propagate("resize", event); if(this.position.top!==prevTop){ props.top=this.position.top + "px"; } if(this.position.left!==prevLeft){ props.left=this.position.left + "px"; } if(this.size.width!==prevWidth){ props.width=this.size.width + "px"; } if(this.size.height!==prevHeight){ props.height=this.size.height + "px"; } el.css(props); if(!this._helper&&this._proportionallyResizeElements.length){ this._proportionallyResize(); } if(! $.isEmptyObject(props)){ this._trigger("resize", event, this.ui()); } return false; }, _mouseStop: function(event){ this.resizing=false; var pr, ista, soffseth, soffsetw, s, left, top, o=this.options, that=this; if(this._helper){ pr=this._proportionallyResizeElements; ista=pr.length&&(/textarea/i).test(pr[0].nodeName); soffseth=ista&&$.ui.hasScroll(pr[0], "left") ? 0:that.sizeDiff.height; soffsetw=ista ? 0:that.sizeDiff.width; s={ width: (that.helper.width() - soffsetw), height: (that.helper.height() - soffseth) }; left=(parseInt(that.element.css("left"), 10) + (that.position.left - that.originalPosition.left))||null; top=(parseInt(that.element.css("top"), 10) + (that.position.top - that.originalPosition.top))||null; if(!o.animate){ this.element.css($.extend(s, { top: top, left: left })); } that.helper.height(that.size.height); that.helper.width(that.size.width); if(this._helper&&!o.animate){ this._proportionallyResize(); }} $("body").css("cursor", "auto"); this.element.removeClass("ui-resizable-resizing"); this._propagate("stop", event); if(this._helper){ this.helper.remove(); } return false; }, _updateVirtualBoundaries: function(forceAspectRatio){ var pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b, o=this.options; b={ minWidth: isNumber(o.minWidth) ? o.minWidth:0, maxWidth: isNumber(o.maxWidth) ? o.maxWidth:Infinity, minHeight: isNumber(o.minHeight) ? o.minHeight:0, maxHeight: isNumber(o.maxHeight) ? o.maxHeight:Infinity }; if(this._aspectRatio||forceAspectRatio){ pMinWidth=b.minHeight * this.aspectRatio; pMinHeight=b.minWidth / this.aspectRatio; pMaxWidth=b.maxHeight * this.aspectRatio; pMaxHeight=b.maxWidth / this.aspectRatio; if(pMinWidth > b.minWidth){ b.minWidth=pMinWidth; } if(pMinHeight > b.minHeight){ b.minHeight=pMinHeight; } if(pMaxWidth < b.maxWidth){ b.maxWidth=pMaxWidth; } if(pMaxHeight < b.maxHeight){ b.maxHeight=pMaxHeight; }} this._vBoundaries=b; }, _updateCache: function(data){ this.offset=this.helper.offset(); if(isNumber(data.left)){ this.position.left=data.left; } if(isNumber(data.top)){ this.position.top=data.top; } if(isNumber(data.height)){ this.size.height=data.height; } if(isNumber(data.width)){ this.size.width=data.width; }}, _updateRatio: function(data){ var cpos=this.position, csize=this.size, a=this.axis; if(isNumber(data.height)){ data.width=(data.height * this.aspectRatio); }else if(isNumber(data.width)){ data.height=(data.width / this.aspectRatio); } if(a==="sw"){ data.left=cpos.left + (csize.width - data.width); data.top=null; } if(a==="nw"){ data.top=cpos.top + (csize.height - data.height); data.left=cpos.left + (csize.width - data.width); } return data; }, _respectSize: function(data){ var o=this._vBoundaries, a=this.axis, ismaxw=isNumber(data.width)&&o.maxWidth&&(o.maxWidth < data.width), ismaxh=isNumber(data.height)&&o.maxHeight&&(o.maxHeight < data.height), isminw=isNumber(data.width)&&o.minWidth&&(o.minWidth > data.width), isminh=isNumber(data.height)&&o.minHeight&&(o.minHeight > data.height), dw=this.originalPosition.left + this.originalSize.width, dh=this.position.top + this.size.height, cw=/sw|nw|w/.test(a), ch=/nw|ne|n/.test(a); if(isminw){ data.width=o.minWidth; } if(isminh){ data.height=o.minHeight; } if(ismaxw){ data.width=o.maxWidth; } if(ismaxh){ data.height=o.maxHeight; } if(isminw&&cw){ data.left=dw - o.minWidth; } if(ismaxw&&cw){ data.left=dw - o.maxWidth; } if(isminh&&ch){ data.top=dh - o.minHeight; } if(ismaxh&&ch){ data.top=dh - o.maxHeight; } if(!data.width&&!data.height&&!data.left&&data.top){ data.top=null; }else if(!data.width&&!data.height&&!data.top&&data.left){ data.left=null; } return data; }, _proportionallyResize: function(){ if(!this._proportionallyResizeElements.length){ return; } var i, j, borders, paddings, prel, element=this.helper||this.element; for(i=0; i < this._proportionallyResizeElements.length; i++){ prel=this._proportionallyResizeElements[i]; if(!this.borderDif){ this.borderDif=[]; borders=[prel.css("borderTopWidth"), prel.css("borderRightWidth"), prel.css("borderBottomWidth"), prel.css("borderLeftWidth")]; paddings=[prel.css("paddingTop"), prel.css("paddingRight"), prel.css("paddingBottom"), prel.css("paddingLeft")]; for(j=0; j < borders.length; j++){ this.borderDif[ j ]=(parseInt(borders[ j ], 10)||0) +(parseInt(paddings[ j ], 10)||0); }} prel.css({ height: (element.height() - this.borderDif[0] - this.borderDif[2])||0, width: (element.width() - this.borderDif[1] - this.borderDif[3])||0 }); }}, _renderProxy: function(){ var el=this.element, o=this.options; this.elementOffset=el.offset(); if(this._helper){ this.helper=this.helper||$("
"); this.helper.addClass(this._helper).css({ width: this.element.outerWidth() - 1, height: this.element.outerHeight() - 1, position: "absolute", left: this.elementOffset.left +"px", top: this.elementOffset.top +"px", zIndex: ++o.zIndex }); this.helper .appendTo("body") .disableSelection(); }else{ this.helper=this.element; }}, _change: { e: function(event, dx){ return { width: this.originalSize.width + dx };}, w: function(event, dx){ var cs=this.originalSize, sp=this.originalPosition; return { left: sp.left + dx, width: cs.width - dx };}, n: function(event, dx, dy){ var cs=this.originalSize, sp=this.originalPosition; return { top: sp.top + dy, height: cs.height - dy };}, s: function(event, dx, dy){ return { height: this.originalSize.height + dy };}, se: function(event, dx, dy){ return $.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [event, dx, dy])); }, sw: function(event, dx, dy){ return $.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [event, dx, dy])); }, ne: function(event, dx, dy){ return $.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [event, dx, dy])); }, nw: function(event, dx, dy){ return $.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [event, dx, dy])); }}, _propagate: function(n, event){ $.ui.plugin.call(this, n, [event, this.ui()]); (n!=="resize"&&this._trigger(n, event, this.ui())); }, plugins: {}, ui: function(){ return { originalElement: this.originalElement, element: this.element, helper: this.helper, position: this.position, size: this.size, originalSize: this.originalSize, originalPosition: this.originalPosition };}}); $.ui.plugin.add("resizable", "animate", { stop: function(event){ var that=$(this).data("ui-resizable"), o=that.options, pr=that._proportionallyResizeElements, ista=pr.length&&(/textarea/i).test(pr[0].nodeName), soffseth=ista&&$.ui.hasScroll(pr[0], "left") ? 0:that.sizeDiff.height, soffsetw=ista ? 0:that.sizeDiff.width, style={ width: (that.size.width - soffsetw), height: (that.size.height - soffseth) }, left=(parseInt(that.element.css("left"), 10) + (that.position.left - that.originalPosition.left))||null, top=(parseInt(that.element.css("top"), 10) + (that.position.top - that.originalPosition.top))||null; that.element.animate($.extend(style, top&&left ? { top: top, left: left }:{}), { duration: o.animateDuration, easing: o.animateEasing, step: function(){ var data={ width: parseInt(that.element.css("width"), 10), height: parseInt(that.element.css("height"), 10), top: parseInt(that.element.css("top"), 10), left: parseInt(that.element.css("left"), 10) }; if(pr&&pr.length){ $(pr[0]).css({ width: data.width, height: data.height }); } that._updateCache(data); that._propagate("resize", event); }} ); }}); $.ui.plugin.add("resizable", "containment", { start: function(){ var element, p, co, ch, cw, width, height, that=$(this).data("ui-resizable"), o=that.options, el=that.element, oc=o.containment, ce=(oc instanceof $) ? oc.get(0):(/parent/.test(oc)) ? el.parent().get(0):oc; if(!ce){ return; } that.containerElement=$(ce); if(/document/.test(oc)||oc===document){ that.containerOffset={ left: 0, top: 0 }; that.containerPosition={ left: 0, top: 0 }; that.parentData={ element: $(document), left: 0, top: 0, width: $(document).width(), height: $(document).height()||document.body.parentNode.scrollHeight };}else{ element=$(ce); p=[]; $([ "Top", "Right", "Left", "Bottom" ]).each(function(i, name){ p[i]=num(element.css("padding" + name)); }); that.containerOffset=element.offset(); that.containerPosition=element.position(); that.containerSize={ height: (element.innerHeight() - p[3]), width: (element.innerWidth() - p[1]) }; co=that.containerOffset; ch=that.containerSize.height; cw=that.containerSize.width; width=($.ui.hasScroll(ce, "left") ? ce.scrollWidth:cw); height=($.ui.hasScroll(ce) ? ce.scrollHeight:ch); that.parentData={ element: ce, left: co.left, top: co.top, width: width, height: height };}}, resize: function(event){ var woset, hoset, isParent, isOffsetRelative, that=$(this).data("ui-resizable"), o=that.options, co=that.containerOffset, cp=that.position, pRatio=that._aspectRatio||event.shiftKey, cop={ top:0, left:0 }, ce=that.containerElement; if(ce[0]!==document&&(/static/).test(ce.css("position"))){ cop=co; } if(cp.left < (that._helper ? co.left:0)){ that.size.width=that.size.width + (that._helper ? (that.position.left - co.left):(that.position.left - cop.left)); if(pRatio){ that.size.height=that.size.width / that.aspectRatio; } that.position.left=o.helper ? co.left:0; } if(cp.top < (that._helper ? co.top:0)){ that.size.height=that.size.height + (that._helper ? (that.position.top - co.top):that.position.top); if(pRatio){ that.size.width=that.size.height * that.aspectRatio; } that.position.top=that._helper ? co.top:0; } that.offset.left=that.parentData.left+that.position.left; that.offset.top=that.parentData.top+that.position.top; woset=Math.abs((that._helper ? that.offset.left - cop.left:(that.offset.left - cop.left)) + that.sizeDiff.width); hoset=Math.abs((that._helper ? that.offset.top - cop.top:(that.offset.top - co.top)) + that.sizeDiff.height); isParent=that.containerElement.get(0)===that.element.parent().get(0); isOffsetRelative=/relative|absolute/.test(that.containerElement.css("position")); if(isParent&&isOffsetRelative){ woset -=that.parentData.left; } if(woset + that.size.width >=that.parentData.width){ that.size.width=that.parentData.width - woset; if(pRatio){ that.size.height=that.size.width / that.aspectRatio; }} if(hoset + that.size.height >=that.parentData.height){ that.size.height=that.parentData.height - hoset; if(pRatio){ that.size.width=that.size.height * that.aspectRatio; }} }, stop: function(){ var that=$(this).data("ui-resizable"), o=that.options, co=that.containerOffset, cop=that.containerPosition, ce=that.containerElement, helper=$(that.helper), ho=helper.offset(), w=helper.outerWidth() - that.sizeDiff.width, h=helper.outerHeight() - that.sizeDiff.height; if(that._helper&&!o.animate&&(/relative/).test(ce.css("position"))){ $(this).css({ left: ho.left - cop.left - co.left, width: w, height: h }); } if(that._helper&&!o.animate&&(/static/).test(ce.css("position"))){ $(this).css({ left: ho.left - cop.left - co.left, width: w, height: h }); }} }); $.ui.plugin.add("resizable", "alsoResize", { start: function (){ var that=$(this).data("ui-resizable"), o=that.options, _store=function (exp){ $(exp).each(function(){ var el=$(this); el.data("ui-resizable-alsoresize", { width: parseInt(el.width(), 10), height: parseInt(el.height(), 10), left: parseInt(el.css("left"), 10), top: parseInt(el.css("top"), 10) }); }); }; if(typeof(o.alsoResize)==="object"&&!o.alsoResize.parentNode){ if(o.alsoResize.length){ o.alsoResize=o.alsoResize[0]; _store(o.alsoResize); }else{ $.each(o.alsoResize, function (exp){ _store(exp); });}}else{ _store(o.alsoResize); }}, resize: function (event, ui){ var that=$(this).data("ui-resizable"), o=that.options, os=that.originalSize, op=that.originalPosition, delta={ height: (that.size.height - os.height)||0, width: (that.size.width - os.width)||0, top: (that.position.top - op.top)||0, left: (that.position.left - op.left)||0 }, _alsoResize=function (exp, c){ $(exp).each(function(){ var el=$(this), start=$(this).data("ui-resizable-alsoresize"), style={}, css=c&&c.length ? c:el.parents(ui.originalElement[0]).length ? ["width", "height"]:["width", "height", "top", "left"]; $.each(css, function (i, prop){ var sum=(start[prop]||0) + (delta[prop]||0); if(sum&&sum >=0){ style[prop]=sum||null; }}); el.css(style); }); }; if(typeof(o.alsoResize)==="object"&&!o.alsoResize.nodeType){ $.each(o.alsoResize, function (exp, c){ _alsoResize(exp, c); }); }else{ _alsoResize(o.alsoResize); }}, stop: function (){ $(this).removeData("resizable-alsoresize"); }}); $.ui.plugin.add("resizable", "ghost", { start: function(){ var that=$(this).data("ui-resizable"), o=that.options, cs=that.size; that.ghost=that.originalElement.clone(); that.ghost .css({ opacity: 0.25, display: "block", position: "relative", height: cs.height, width: cs.width, margin: 0, left: 0, top: 0 }) .addClass("ui-resizable-ghost") .addClass(typeof o.ghost==="string" ? o.ghost:""); that.ghost.appendTo(that.helper); }, resize: function(){ var that=$(this).data("ui-resizable"); if(that.ghost){ that.ghost.css({ position: "relative", height: that.size.height, width: that.size.width }); }}, stop: function(){ var that=$(this).data("ui-resizable"); if(that.ghost&&that.helper){ that.helper.get(0).removeChild(that.ghost.get(0)); }} }); $.ui.plugin.add("resizable", "grid", { resize: function(){ var that=$(this).data("ui-resizable"), o=that.options, cs=that.size, os=that.originalSize, op=that.originalPosition, a=that.axis, grid=typeof o.grid==="number" ? [o.grid, o.grid]:o.grid, gridX=(grid[0]||1), gridY=(grid[1]||1), ox=Math.round((cs.width - os.width) / gridX) * gridX, oy=Math.round((cs.height - os.height) / gridY) * gridY, newWidth=os.width + ox, newHeight=os.height + oy, isMaxWidth=o.maxWidth&&(o.maxWidth < newWidth), isMaxHeight=o.maxHeight&&(o.maxHeight < newHeight), isMinWidth=o.minWidth&&(o.minWidth > newWidth), isMinHeight=o.minHeight&&(o.minHeight > newHeight); o.grid=grid; if(isMinWidth){ newWidth=newWidth + gridX; } if(isMinHeight){ newHeight=newHeight + gridY; } if(isMaxWidth){ newWidth=newWidth - gridX; } if(isMaxHeight){ newHeight=newHeight - gridY; } if(/^(se|s|e)$/.test(a)){ that.size.width=newWidth; that.size.height=newHeight; }else if(/^(ne)$/.test(a)){ that.size.width=newWidth; that.size.height=newHeight; that.position.top=op.top - oy; }else if(/^(sw)$/.test(a)){ that.size.width=newWidth; that.size.height=newHeight; that.position.left=op.left - ox; }else{ that.size.width=newWidth; that.size.height=newHeight; that.position.top=op.top - oy; that.position.left=op.left - ox; }} }); })(jQuery); (function($, undefined){ $.widget("ui.selectable", $.ui.mouse, { version: "1.10.3", options: { appendTo: "body", autoRefresh: true, distance: 0, filter: "*", tolerance: "touch", selected: null, selecting: null, start: null, stop: null, unselected: null, unselecting: null }, _create: function(){ var selectees, that=this; this.element.addClass("ui-selectable"); this.dragged=false; this.refresh=function(){ selectees=$(that.options.filter, that.element[0]); selectees.addClass("ui-selectee"); selectees.each(function(){ var $this=$(this), pos=$this.offset(); $.data(this, "selectable-item", { element: this, $element: $this, left: pos.left, top: pos.top, right: pos.left + $this.outerWidth(), bottom: pos.top + $this.outerHeight(), startselected: false, selected: $this.hasClass("ui-selected"), selecting: $this.hasClass("ui-selecting"), unselecting: $this.hasClass("ui-unselecting") }); }); }; this.refresh(); this.selectees=selectees.addClass("ui-selectee"); this._mouseInit(); this.helper=$("
"); }, _destroy: function(){ this.selectees .removeClass("ui-selectee") .removeData("selectable-item"); this.element .removeClass("ui-selectable ui-selectable-disabled"); this._mouseDestroy(); }, _mouseStart: function(event){ var that=this, options=this.options; this.opos=[event.pageX, event.pageY]; if(this.options.disabled){ return; } this.selectees=$(options.filter, this.element[0]); this._trigger("start", event); $(options.appendTo).append(this.helper); this.helper.css({ "left": event.pageX, "top": event.pageY, "width": 0, "height": 0 }); if(options.autoRefresh){ this.refresh(); } this.selectees.filter(".ui-selected").each(function(){ var selectee=$.data(this, "selectable-item"); selectee.startselected=true; if(!event.metaKey&&!event.ctrlKey){ selectee.$element.removeClass("ui-selected"); selectee.selected=false; selectee.$element.addClass("ui-unselecting"); selectee.unselecting=true; that._trigger("unselecting", event, { unselecting: selectee.element }); }}); $(event.target).parents().addBack().each(function(){ var doSelect, selectee=$.data(this, "selectable-item"); if(selectee){ doSelect=(!event.metaKey&&!event.ctrlKey)||!selectee.$element.hasClass("ui-selected"); selectee.$element .removeClass(doSelect ? "ui-unselecting":"ui-selected") .addClass(doSelect ? "ui-selecting":"ui-unselecting"); selectee.unselecting = !doSelect; selectee.selecting=doSelect; selectee.selected=doSelect; if(doSelect){ that._trigger("selecting", event, { selecting: selectee.element }); }else{ that._trigger("unselecting", event, { unselecting: selectee.element }); } return false; }}); }, _mouseDrag: function(event){ this.dragged=true; if(this.options.disabled){ return; } var tmp, that=this, options=this.options, x1=this.opos[0], y1=this.opos[1], x2=event.pageX, y2=event.pageY; if(x1 > x2){ tmp=x2; x2=x1; x1=tmp; } if(y1 > y2){ tmp=y2; y2=y1; y1=tmp; } this.helper.css({left: x1, top: y1, width: x2-x1, height: y2-y1}); this.selectees.each(function(){ var selectee=$.data(this, "selectable-item"), hit=false; if(!selectee||selectee.element===that.element[0]){ return; } if(options.tolerance==="touch"){ hit=(!(selectee.left > x2||selectee.right < x1||selectee.top > y2||selectee.bottom < y1)); }else if(options.tolerance==="fit"){ hit=(selectee.left > x1&&selectee.right < x2&&selectee.top > y1&&selectee.bottom < y2); } if(hit){ if(selectee.selected){ selectee.$element.removeClass("ui-selected"); selectee.selected=false; } if(selectee.unselecting){ selectee.$element.removeClass("ui-unselecting"); selectee.unselecting=false; } if(!selectee.selecting){ selectee.$element.addClass("ui-selecting"); selectee.selecting=true; that._trigger("selecting", event, { selecting: selectee.element }); }}else{ if(selectee.selecting){ if((event.metaKey||event.ctrlKey)&&selectee.startselected){ selectee.$element.removeClass("ui-selecting"); selectee.selecting=false; selectee.$element.addClass("ui-selected"); selectee.selected=true; }else{ selectee.$element.removeClass("ui-selecting"); selectee.selecting=false; if(selectee.startselected){ selectee.$element.addClass("ui-unselecting"); selectee.unselecting=true; } that._trigger("unselecting", event, { unselecting: selectee.element }); }} if(selectee.selected){ if(!event.metaKey&&!event.ctrlKey&&!selectee.startselected){ selectee.$element.removeClass("ui-selected"); selectee.selected=false; selectee.$element.addClass("ui-unselecting"); selectee.unselecting=true; that._trigger("unselecting", event, { unselecting: selectee.element }); }} }}); return false; }, _mouseStop: function(event){ var that=this; this.dragged=false; $(".ui-unselecting", this.element[0]).each(function(){ var selectee=$.data(this, "selectable-item"); selectee.$element.removeClass("ui-unselecting"); selectee.unselecting=false; selectee.startselected=false; that._trigger("unselected", event, { unselected: selectee.element }); }); $(".ui-selecting", this.element[0]).each(function(){ var selectee=$.data(this, "selectable-item"); selectee.$element.removeClass("ui-selecting").addClass("ui-selected"); selectee.selecting=false; selectee.selected=true; selectee.startselected=true; that._trigger("selected", event, { selected: selectee.element }); }); this._trigger("stop", event); this.helper.remove(); return false; }}); })(jQuery); (function($, undefined){ function isOverAxis(x, reference, size){ return(x > reference)&&(x <(reference + size)); } function isFloating(item){ return (/left|right/).test(item.css("float"))||(/inline|table-cell/).test(item.css("display")); } $.widget("ui.sortable", $.ui.mouse, { version: "1.10.3", widgetEventPrefix: "sort", ready: false, options: { appendTo: "parent", axis: false, connectWith: false, containment: false, cursor: "auto", cursorAt: false, dropOnEmpty: true, forcePlaceholderSize: false, forceHelperSize: false, grid: false, handle: false, helper: "original", items: "> *", opacity: false, placeholder: false, revert: false, scroll: true, scrollSensitivity: 20, scrollSpeed: 20, scope: "default", tolerance: "intersect", zIndex: 1000, activate: null, beforeStop: null, change: null, deactivate: null, out: null, over: null, receive: null, remove: null, sort: null, start: null, stop: null, update: null }, _create: function(){ var o=this.options; this.containerCache={}; this.element.addClass("ui-sortable"); this.refresh(); this.floating=this.items.length ? o.axis==="x"||isFloating(this.items[0].item):false; this.offset=this.element.offset(); this._mouseInit(); this.ready=true; }, _destroy: function(){ this.element .removeClass("ui-sortable ui-sortable-disabled"); this._mouseDestroy(); for(var i=this.items.length - 1; i >=0; i--){ this.items[i].item.removeData(this.widgetName + "-item"); } return this; }, _setOption: function(key, value){ if(key==="disabled"){ this.options[ key ]=value; this.widget().toggleClass("ui-sortable-disabled", !!value); }else{ $.Widget.prototype._setOption.apply(this, arguments); }}, _mouseCapture: function(event, overrideHandle){ var currentItem=null, validHandle=false, that=this; if(this.reverting){ return false; } if(this.options.disabled||this.options.type==="static"){ return false; } this._refreshItems(event); $(event.target).parents().each(function(){ if($.data(this, that.widgetName + "-item")===that){ currentItem=$(this); return false; }}); if($.data(event.target, that.widgetName + "-item")===that){ currentItem=$(event.target); } if(!currentItem){ return false; } if(this.options.handle&&!overrideHandle){ $(this.options.handle, currentItem).find("*").addBack().each(function(){ if(this===event.target){ validHandle=true; }}); if(!validHandle){ return false; }} this.currentItem=currentItem; this._removeCurrentsFromItems(); return true; }, _mouseStart: function(event, overrideHandle, noActivation){ var i, body, o=this.options; this.currentContainer=this; this.refreshPositions(); this.helper=this._createHelper(event); this._cacheHelperProportions(); this._cacheMargins(); this.scrollParent=this.helper.scrollParent(); this.offset=this.currentItem.offset(); this.offset={ top: this.offset.top - this.margins.top, left: this.offset.left - this.margins.left }; $.extend(this.offset, { click: { left: event.pageX - this.offset.left, top: event.pageY - this.offset.top }, parent: this._getParentOffset(), relative: this._getRelativeOffset() }); this.helper.css("position", "absolute"); this.cssPosition=this.helper.css("position"); this.originalPosition=this._generatePosition(event); this.originalPageX=event.pageX; this.originalPageY=event.pageY; (o.cursorAt&&this._adjustOffsetFromHelper(o.cursorAt)); this.domPosition={ prev: this.currentItem.prev()[0], parent: this.currentItem.parent()[0] }; if(this.helper[0]!==this.currentItem[0]){ this.currentItem.hide(); } this._createPlaceholder(); if(o.containment){ this._setContainment(); } if(o.cursor&&o.cursor!=="auto"){ body=this.document.find("body"); this.storedCursor=body.css("cursor"); body.css("cursor", o.cursor); this.storedStylesheet=$("").appendTo(body); } if(o.opacity){ if(this.helper.css("opacity")){ this._storedOpacity=this.helper.css("opacity"); } this.helper.css("opacity", o.opacity); } if(o.zIndex){ if(this.helper.css("zIndex")){ this._storedZIndex=this.helper.css("zIndex"); } this.helper.css("zIndex", o.zIndex); } if(this.scrollParent[0]!==document&&this.scrollParent[0].tagName!=="HTML"){ this.overflowOffset=this.scrollParent.offset(); } this._trigger("start", event, this._uiHash()); if(!this._preserveHelperProportions){ this._cacheHelperProportions(); } if(!noActivation){ for(i=this.containers.length - 1; i >=0; i--){ this.containers[ i ]._trigger("activate", event, this._uiHash(this)); }} if($.ui.ddmanager){ $.ui.ddmanager.current=this; } if($.ui.ddmanager&&!o.dropBehaviour){ $.ui.ddmanager.prepareOffsets(this, event); } this.dragging=true; this.helper.addClass("ui-sortable-helper"); this._mouseDrag(event); return true; }, _mouseDrag: function(event){ var i, item, itemElement, intersection, o=this.options, scrolled=false; this.position=this._generatePosition(event); this.positionAbs=this._convertPositionTo("absolute"); if(!this.lastPositionAbs){ this.lastPositionAbs=this.positionAbs; } if(this.options.scroll){ if(this.scrollParent[0]!==document&&this.scrollParent[0].tagName!=="HTML"){ if((this.overflowOffset.top + this.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity){ this.scrollParent[0].scrollTop=scrolled=this.scrollParent[0].scrollTop + o.scrollSpeed; }else if(event.pageY - this.overflowOffset.top < o.scrollSensitivity){ this.scrollParent[0].scrollTop=scrolled=this.scrollParent[0].scrollTop - o.scrollSpeed; } if((this.overflowOffset.left + this.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity){ this.scrollParent[0].scrollLeft=scrolled=this.scrollParent[0].scrollLeft + o.scrollSpeed; }else if(event.pageX - this.overflowOffset.left < o.scrollSensitivity){ this.scrollParent[0].scrollLeft=scrolled=this.scrollParent[0].scrollLeft - o.scrollSpeed; }}else{ if(event.pageY - $(document).scrollTop() < o.scrollSensitivity){ scrolled=$(document).scrollTop($(document).scrollTop() - o.scrollSpeed); }else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity){ scrolled=$(document).scrollTop($(document).scrollTop() + o.scrollSpeed); } if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity){ scrolled=$(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed); }else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity){ scrolled=$(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed); }} if(scrolled!==false&&$.ui.ddmanager&&!o.dropBehaviour){ $.ui.ddmanager.prepareOffsets(this, event); }} this.positionAbs=this._convertPositionTo("absolute"); if(!this.options.axis||this.options.axis!=="y"){ this.helper[0].style.left=this.position.left+"px"; } if(!this.options.axis||this.options.axis!=="x"){ this.helper[0].style.top=this.position.top+"px"; } for (i=this.items.length - 1; i >=0; i--){ item=this.items[i]; itemElement=item.item[0]; intersection=this._intersectsWithPointer(item); if(!intersection){ continue; } if(item.instance!==this.currentContainer){ continue; } if(itemElement!==this.currentItem[0] && this.placeholder[intersection===1 ? "next":"prev"]()[0]!==itemElement && !$.contains(this.placeholder[0], itemElement) && (this.options.type==="semi-dynamic" ? !$.contains(this.element[0], itemElement):true) ){ this.direction=intersection===1 ? "down":"up"; if(this.options.tolerance==="pointer"||this._intersectsWithSides(item)){ this._rearrange(event, item); }else{ break; } this._trigger("change", event, this._uiHash()); break; }} this._contactContainers(event); if($.ui.ddmanager){ $.ui.ddmanager.drag(this, event); } this._trigger("sort", event, this._uiHash()); this.lastPositionAbs=this.positionAbs; return false; }, _mouseStop: function(event, noPropagation){ if(!event){ return; } if($.ui.ddmanager&&!this.options.dropBehaviour){ $.ui.ddmanager.drop(this, event); } if(this.options.revert){ var that=this, cur=this.placeholder.offset(), axis=this.options.axis, animation={}; if(!axis||axis==="x"){ animation.left=cur.left - this.offset.parent.left - this.margins.left + (this.offsetParent[0]===document.body ? 0:this.offsetParent[0].scrollLeft); } if(!axis||axis==="y"){ animation.top=cur.top - this.offset.parent.top - this.margins.top + (this.offsetParent[0]===document.body ? 0:this.offsetParent[0].scrollTop); } this.reverting=true; $(this.helper).animate(animation, parseInt(this.options.revert, 10)||500, function(){ that._clear(event); }); }else{ this._clear(event, noPropagation); } return false; }, cancel: function(){ if(this.dragging){ this._mouseUp({ target: null }); if(this.options.helper==="original"){ this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"); }else{ this.currentItem.show(); } for (var i=this.containers.length - 1; i >=0; i--){ this.containers[i]._trigger("deactivate", null, this._uiHash(this)); if(this.containers[i].containerCache.over){ this.containers[i]._trigger("out", null, this._uiHash(this)); this.containers[i].containerCache.over=0; }} } if(this.placeholder){ if(this.placeholder[0].parentNode){ this.placeholder[0].parentNode.removeChild(this.placeholder[0]); } if(this.options.helper!=="original"&&this.helper&&this.helper[0].parentNode){ this.helper.remove(); } $.extend(this, { helper: null, dragging: false, reverting: false, _noFinalSort: null }); if(this.domPosition.prev){ $(this.domPosition.prev).after(this.currentItem); }else{ $(this.domPosition.parent).prepend(this.currentItem); }} return this; }, serialize: function(o){ var items=this._getItemsAsjQuery(o&&o.connected), str=[]; o=o||{}; $(items).each(function(){ var res=($(o.item||this).attr(o.attribute||"id")||"").match(o.expression||(/(.+)[\-=_](.+)/)); if(res){ str.push((o.key||res[1]+"[]")+"="+(o.key&&o.expression ? res[1]:res[2])); }}); if(!str.length&&o.key){ str.push(o.key + "="); } return str.join("&"); }, toArray: function(o){ var items=this._getItemsAsjQuery(o&&o.connected), ret=[]; o=o||{}; items.each(function(){ ret.push($(o.item||this).attr(o.attribute||"id")||""); }); return ret; }, _intersectsWith: function(item){ var x1=this.positionAbs.left, x2=x1 + this.helperProportions.width, y1=this.positionAbs.top, y2=y1 + this.helperProportions.height, l=item.left, r=l + item.width, t=item.top, b=t + item.height, dyClick=this.offset.click.top, dxClick=this.offset.click.left, isOverElementHeight=(this.options.axis==="x")||(( y1 + dyClick) > t&&(y1 + dyClick) < b), isOverElementWidth=(this.options.axis==="y")||(( x1 + dxClick) > l&&(x1 + dxClick) < r), isOverElement=isOverElementHeight&&isOverElementWidth; if(this.options.tolerance==="pointer" || this.options.forcePointerForContainers || (this.options.tolerance!=="pointer"&&this.helperProportions[this.floating ? "width":"height"] > item[this.floating ? "width":"height"]) ){ return isOverElement; }else{ return (l < x1 + (this.helperProportions.width / 2) && x2 - (this.helperProportions.width / 2) < r && t < y1 + (this.helperProportions.height / 2) && y2 - (this.helperProportions.height / 2) < b); }}, _intersectsWithPointer: function(item){ var isOverElementHeight=(this.options.axis==="x")||isOverAxis(this.positionAbs.top + this.offset.click.top, item.top, item.height), isOverElementWidth=(this.options.axis==="y")||isOverAxis(this.positionAbs.left + this.offset.click.left, item.left, item.width), isOverElement=isOverElementHeight&&isOverElementWidth, verticalDirection=this._getDragVerticalDirection(), horizontalDirection=this._getDragHorizontalDirection(); if(!isOverElement){ return false; } return this.floating ? (((horizontalDirection&&horizontalDirection==="right")||verticalDirection==="down") ? 2:1) :(verticalDirection&&(verticalDirection==="down" ? 2:1)); }, _intersectsWithSides: function(item){ var isOverBottomHalf=isOverAxis(this.positionAbs.top + this.offset.click.top, item.top + (item.height/2), item.height), isOverRightHalf=isOverAxis(this.positionAbs.left + this.offset.click.left, item.left + (item.width/2), item.width), verticalDirection=this._getDragVerticalDirection(), horizontalDirection=this._getDragHorizontalDirection(); if(this.floating&&horizontalDirection){ return ((horizontalDirection==="right"&&isOverRightHalf)||(horizontalDirection==="left"&&!isOverRightHalf)); }else{ return verticalDirection&&((verticalDirection==="down"&&isOverBottomHalf)||(verticalDirection==="up"&&!isOverBottomHalf)); }}, _getDragVerticalDirection: function(){ var delta=this.positionAbs.top - this.lastPositionAbs.top; return delta!==0&&(delta > 0 ? "down":"up"); }, _getDragHorizontalDirection: function(){ var delta=this.positionAbs.left - this.lastPositionAbs.left; return delta!==0&&(delta > 0 ? "right":"left"); }, refresh: function(event){ this._refreshItems(event); this.refreshPositions(); return this; }, _connectWith: function(){ var options=this.options; return options.connectWith.constructor===String ? [options.connectWith]:options.connectWith; }, _getItemsAsjQuery: function(connected){ var i, j, cur, inst, items=[], queries=[], connectWith=this._connectWith(); if(connectWith&&connected){ for (i=connectWith.length - 1; i >=0; i--){ cur=$(connectWith[i]); for(j=cur.length - 1; j >=0; j--){ inst=$.data(cur[j], this.widgetFullName); if(inst&&inst!==this&&!inst.options.disabled){ queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element):$(inst.options.items, inst.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), inst]); }} }} queries.push([$.isFunction(this.options.items) ? this.options.items.call(this.element, null, { options: this.options, item: this.currentItem }):$(this.options.items, this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), this]); for (i=queries.length - 1; i >=0; i--){ queries[i][0].each(function(){ items.push(this); }); } return $(items); }, _removeCurrentsFromItems: function(){ var list=this.currentItem.find(":data(" + this.widgetName + "-item)"); this.items=$.grep(this.items, function (item){ for (var j=0; j < list.length; j++){ if(list[j]===item.item[0]){ return false; }} return true; }); }, _refreshItems: function(event){ this.items=[]; this.containers=[this]; var i, j, cur, inst, targetData, _queries, item, queriesLength, items=this.items, queries=[[$.isFunction(this.options.items) ? this.options.items.call(this.element[0], event, { item: this.currentItem }):$(this.options.items, this.element), this]], connectWith=this._connectWith(); if(connectWith&&this.ready){ for (i=connectWith.length - 1; i >=0; i--){ cur=$(connectWith[i]); for (j=cur.length - 1; j >=0; j--){ inst=$.data(cur[j], this.widgetFullName); if(inst&&inst!==this&&!inst.options.disabled){ queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element[0], event, { item: this.currentItem }):$(inst.options.items, inst.element), inst]); this.containers.push(inst); }} }} for (i=queries.length - 1; i >=0; i--){ targetData=queries[i][1]; _queries=queries[i][0]; for (j=0, queriesLength=_queries.length; j < queriesLength; j++){ item=$(_queries[j]); item.data(this.widgetName + "-item", targetData); items.push({ item: item, instance: targetData, width: 0, height: 0, left: 0, top: 0 }); }} }, refreshPositions: function(fast){ if(this.offsetParent&&this.helper){ this.offset.parent=this._getParentOffset(); } var i, item, t, p; for (i=this.items.length - 1; i >=0; i--){ item=this.items[i]; if(item.instance!==this.currentContainer&&this.currentContainer&&item.item[0]!==this.currentItem[0]){ continue; } t=this.options.toleranceElement ? $(this.options.toleranceElement, item.item):item.item; if(!fast){ item.width=t.outerWidth(); item.height=t.outerHeight(); } p=t.offset(); item.left=p.left; item.top=p.top; } if(this.options.custom&&this.options.custom.refreshContainers){ this.options.custom.refreshContainers.call(this); }else{ for (i=this.containers.length - 1; i >=0; i--){ p=this.containers[i].element.offset(); this.containers[i].containerCache.left=p.left; this.containers[i].containerCache.top=p.top; this.containers[i].containerCache.width=this.containers[i].element.outerWidth(); this.containers[i].containerCache.height=this.containers[i].element.outerHeight(); }} return this; }, _createPlaceholder: function(that){ that=that||this; var className, o=that.options; if(!o.placeholder||o.placeholder.constructor===String){ className=o.placeholder; o.placeholder={ element: function(){ var nodeName=that.currentItem[0].nodeName.toLowerCase(), element=$("<" + nodeName + ">", that.document[0]) .addClass(className||that.currentItem[0].className+" ui-sortable-placeholder") .removeClass("ui-sortable-helper"); if(nodeName==="tr"){ that.currentItem.children().each(function(){ $(" ", that.document[0]) .attr("colspan", $(this).attr("colspan")||1) .appendTo(element); }); }else if(nodeName==="img"){ element.attr("src", that.currentItem.attr("src")); } if(!className){ element.css("visibility", "hidden"); } return element; }, update: function(container, p){ if(className&&!o.forcePlaceholderSize){ return; } if(!p.height()){ p.height(that.currentItem.innerHeight() - parseInt(that.currentItem.css("paddingTop")||0, 10) - parseInt(that.currentItem.css("paddingBottom")||0, 10)); } if(!p.width()){ p.width(that.currentItem.innerWidth() - parseInt(that.currentItem.css("paddingLeft")||0, 10) - parseInt(that.currentItem.css("paddingRight")||0, 10)); }} };} that.placeholder=$(o.placeholder.element.call(that.element, that.currentItem)); that.currentItem.after(that.placeholder); o.placeholder.update(that, that.placeholder); }, _contactContainers: function(event){ var i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, base, cur, nearBottom, floating, innermostContainer=null, innermostIndex=null; for (i=this.containers.length - 1; i >=0; i--){ if($.contains(this.currentItem[0], this.containers[i].element[0])){ continue; } if(this._intersectsWith(this.containers[i].containerCache)){ if(innermostContainer&&$.contains(this.containers[i].element[0], innermostContainer.element[0])){ continue; } innermostContainer=this.containers[i]; innermostIndex=i; }else{ if(this.containers[i].containerCache.over){ this.containers[i]._trigger("out", event, this._uiHash(this)); this.containers[i].containerCache.over=0; }} } if(!innermostContainer){ return; } if(this.containers.length===1){ if(!this.containers[innermostIndex].containerCache.over){ this.containers[innermostIndex]._trigger("over", event, this._uiHash(this)); this.containers[innermostIndex].containerCache.over=1; }}else{ dist=10000; itemWithLeastDistance=null; floating=innermostContainer.floating||isFloating(this.currentItem); posProperty=floating ? "left":"top"; sizeProperty=floating ? "width":"height"; base=this.positionAbs[posProperty] + this.offset.click[posProperty]; for (j=this.items.length - 1; j >=0; j--){ if(!$.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])){ continue; } if(this.items[j].item[0]===this.currentItem[0]){ continue; } if(floating&&!isOverAxis(this.positionAbs.top + this.offset.click.top, this.items[j].top, this.items[j].height)){ continue; } cur=this.items[j].item.offset()[posProperty]; nearBottom=false; if(Math.abs(cur - base) > Math.abs(cur + this.items[j][sizeProperty] - base)){ nearBottom=true; cur +=this.items[j][sizeProperty]; } if(Math.abs(cur - base) < dist){ dist=Math.abs(cur - base); itemWithLeastDistance=this.items[j]; this.direction=nearBottom ? "up": "down"; }} if(!itemWithLeastDistance&&!this.options.dropOnEmpty){ return; } if(this.currentContainer===this.containers[innermostIndex]){ return; } itemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true):this._rearrange(event, null, this.containers[innermostIndex].element, true); this._trigger("change", event, this._uiHash()); this.containers[innermostIndex]._trigger("change", event, this._uiHash(this)); this.currentContainer=this.containers[innermostIndex]; this.options.placeholder.update(this.currentContainer, this.placeholder); this.containers[innermostIndex]._trigger("over", event, this._uiHash(this)); this.containers[innermostIndex].containerCache.over=1; }}, _createHelper: function(event){ var o=this.options, helper=$.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event, this.currentItem])):(o.helper==="clone" ? this.currentItem.clone():this.currentItem); if(!helper.parents("body").length){ $(o.appendTo!=="parent" ? o.appendTo:this.currentItem[0].parentNode)[0].appendChild(helper[0]); } if(helper[0]===this.currentItem[0]){ this._storedCSS={ width: this.currentItem[0].style.width, height: this.currentItem[0].style.height, position: this.currentItem.css("position"), top: this.currentItem.css("top"), left: this.currentItem.css("left") };} if(!helper[0].style.width||o.forceHelperSize){ helper.width(this.currentItem.width()); } if(!helper[0].style.height||o.forceHelperSize){ helper.height(this.currentItem.height()); } return helper; }, _adjustOffsetFromHelper: function(obj){ if(typeof obj==="string"){ obj=obj.split(" "); } if($.isArray(obj)){ obj={left: +obj[0], top: +obj[1]||0};} if("left" in obj){ this.offset.click.left=obj.left + this.margins.left; } if("right" in obj){ this.offset.click.left=this.helperProportions.width - obj.right + this.margins.left; } if("top" in obj){ this.offset.click.top=obj.top + this.margins.top; } if("bottom" in obj){ this.offset.click.top=this.helperProportions.height - obj.bottom + this.margins.top; }}, _getParentOffset: function(){ this.offsetParent=this.helper.offsetParent(); var po=this.offsetParent.offset(); if(this.cssPosition==="absolute"&&this.scrollParent[0]!==document&&$.contains(this.scrollParent[0], this.offsetParent[0])){ po.left +=this.scrollParent.scrollLeft(); po.top +=this.scrollParent.scrollTop(); } if(this.offsetParent[0]===document.body||(this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()==="html"&&$.ui.ie)){ po={ top: 0, left: 0 };} return { top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10)||0), left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"),10)||0) };}, _getRelativeOffset: function(){ if(this.cssPosition==="relative"){ var p=this.currentItem.position(); return { top: p.top - (parseInt(this.helper.css("top"),10)||0) + this.scrollParent.scrollTop(), left: p.left - (parseInt(this.helper.css("left"),10)||0) + this.scrollParent.scrollLeft() };}else{ return { top: 0, left: 0 };}}, _cacheMargins: function(){ this.margins={ left: (parseInt(this.currentItem.css("marginLeft"),10)||0), top: (parseInt(this.currentItem.css("marginTop"),10)||0) };}, _cacheHelperProportions: function(){ this.helperProportions={ width: this.helper.outerWidth(), height: this.helper.outerHeight() };}, _setContainment: function(){ var ce, co, over, o=this.options; if(o.containment==="parent"){ o.containment=this.helper[0].parentNode; } if(o.containment==="document"||o.containment==="window"){ this.containment=[ 0 - this.offset.relative.left - this.offset.parent.left, 0 - this.offset.relative.top - this.offset.parent.top, $(o.containment==="document" ? document:window).width() - this.helperProportions.width - this.margins.left, ($(o.containment==="document" ? document:window).height()||document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top ]; } if(!(/^(document|window|parent)$/).test(o.containment)){ ce=$(o.containment)[0]; co=$(o.containment).offset(); over=($(ce).css("overflow")!=="hidden"); this.containment=[ co.left + (parseInt($(ce).css("borderLeftWidth"),10)||0) + (parseInt($(ce).css("paddingLeft"),10)||0) - this.margins.left, co.top + (parseInt($(ce).css("borderTopWidth"),10)||0) + (parseInt($(ce).css("paddingTop"),10)||0) - this.margins.top, co.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth):ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"),10)||0) - (parseInt($(ce).css("paddingRight"),10)||0) - this.helperProportions.width - this.margins.left, co.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight):ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"),10)||0) - (parseInt($(ce).css("paddingBottom"),10)||0) - this.helperProportions.height - this.margins.top ]; }}, _convertPositionTo: function(d, pos){ if(!pos){ pos=this.position; } var mod=d==="absolute" ? 1:-1, scroll=this.cssPosition==="absolute"&&!(this.scrollParent[0]!==document&&$.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent:this.scrollParent, scrollIsRootNode=(/(html|body)/i).test(scroll[0].tagName); return { top: ( pos.top + this.offset.relative.top * mod + this.offset.parent.top * mod - (( this.cssPosition==="fixed" ? -this.scrollParent.scrollTop():(scrollIsRootNode ? 0:scroll.scrollTop())) * mod) ), left: ( pos.left + this.offset.relative.left * mod + this.offset.parent.left * mod - (( this.cssPosition==="fixed" ? -this.scrollParent.scrollLeft():scrollIsRootNode ? 0:scroll.scrollLeft()) * mod) ) };}, _generatePosition: function(event){ var top, left, o=this.options, pageX=event.pageX, pageY=event.pageY, scroll=this.cssPosition==="absolute"&&!(this.scrollParent[0]!==document&&$.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent:this.scrollParent, scrollIsRootNode=(/(html|body)/i).test(scroll[0].tagName); if(this.cssPosition==="relative"&&!(this.scrollParent[0]!==document&&this.scrollParent[0]!==this.offsetParent[0])){ this.offset.relative=this._getRelativeOffset(); } if(this.originalPosition){ if(this.containment){ if(event.pageX - this.offset.click.left < this.containment[0]){ pageX=this.containment[0] + this.offset.click.left; } if(event.pageY - this.offset.click.top < this.containment[1]){ pageY=this.containment[1] + this.offset.click.top; } if(event.pageX - this.offset.click.left > this.containment[2]){ pageX=this.containment[2] + this.offset.click.left; } if(event.pageY - this.offset.click.top > this.containment[3]){ pageY=this.containment[3] + this.offset.click.top; }} if(o.grid){ top=this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1]; pageY=this.containment ?((top - this.offset.click.top >=this.containment[1]&&top - this.offset.click.top <=this.containment[3]) ? top:((top - this.offset.click.top >=this.containment[1]) ? top - o.grid[1]:top + o.grid[1])):top; left=this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0]; pageX=this.containment ?((left - this.offset.click.left >=this.containment[0]&&left - this.offset.click.left <=this.containment[2]) ? left:((left - this.offset.click.left >=this.containment[0]) ? left - o.grid[0]:left + o.grid[0])):left; }} return { top: ( pageY - this.offset.click.top - this.offset.relative.top - this.offset.parent.top + (( this.cssPosition==="fixed" ? -this.scrollParent.scrollTop():(scrollIsRootNode ? 0:scroll.scrollTop()))) ), left: ( pageX - this.offset.click.left - this.offset.relative.left - this.offset.parent.left + (( this.cssPosition==="fixed" ? -this.scrollParent.scrollLeft():scrollIsRootNode ? 0:scroll.scrollLeft())) ) };}, _rearrange: function(event, i, a, hardRefresh){ a ? a[0].appendChild(this.placeholder[0]):i.item[0].parentNode.insertBefore(this.placeholder[0], (this.direction==="down" ? i.item[0]:i.item[0].nextSibling)); this.counter=this.counter ? ++this.counter:1; var counter=this.counter; this._delay(function(){ if(counter===this.counter){ this.refreshPositions(!hardRefresh); }}); }, _clear: function(event, noPropagation){ this.reverting=false; var i, delayedTriggers=[]; if(!this._noFinalSort&&this.currentItem.parent().length){ this.placeholder.before(this.currentItem); } this._noFinalSort=null; if(this.helper[0]===this.currentItem[0]){ for(i in this._storedCSS){ if(this._storedCSS[i]==="auto"||this._storedCSS[i]==="static"){ this._storedCSS[i]=""; }} this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"); }else{ this.currentItem.show(); } if(this.fromOutside&&!noPropagation){ delayedTriggers.push(function(event){ this._trigger("receive", event, this._uiHash(this.fromOutside)); }); } if((this.fromOutside||this.domPosition.prev!==this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!==this.currentItem.parent()[0])&&!noPropagation){ delayedTriggers.push(function(event){ this._trigger("update", event, this._uiHash()); }); } if(this!==this.currentContainer){ if(!noPropagation){ delayedTriggers.push(function(event){ this._trigger("remove", event, this._uiHash()); }); delayedTriggers.push((function(c){ return function(event){ c._trigger("receive", event, this._uiHash(this)); };}).call(this, this.currentContainer)); delayedTriggers.push((function(c){ return function(event){ c._trigger("update", event, this._uiHash(this)); };}).call(this, this.currentContainer)); }} for (i=this.containers.length - 1; i >=0; i--){ if(!noPropagation){ delayedTriggers.push((function(c){ return function(event){ c._trigger("deactivate", event, this._uiHash(this)); };}).call(this, this.containers[i])); } if(this.containers[i].containerCache.over){ delayedTriggers.push((function(c){ return function(event){ c._trigger("out", event, this._uiHash(this)); };}).call(this, this.containers[i])); this.containers[i].containerCache.over=0; }} if(this.storedCursor){ this.document.find("body").css("cursor", this.storedCursor); this.storedStylesheet.remove(); } if(this._storedOpacity){ this.helper.css("opacity", this._storedOpacity); } if(this._storedZIndex){ this.helper.css("zIndex", this._storedZIndex==="auto" ? "":this._storedZIndex); } this.dragging=false; if(this.cancelHelperRemoval){ if(!noPropagation){ this._trigger("beforeStop", event, this._uiHash()); for (i=0; i < delayedTriggers.length; i++){ delayedTriggers[i].call(this, event); } this._trigger("stop", event, this._uiHash()); } this.fromOutside=false; return false; } if(!noPropagation){ this._trigger("beforeStop", event, this._uiHash()); } this.placeholder[0].parentNode.removeChild(this.placeholder[0]); if(this.helper[0]!==this.currentItem[0]){ this.helper.remove(); } this.helper=null; if(!noPropagation){ for (i=0; i < delayedTriggers.length; i++){ delayedTriggers[i].call(this, event); } this._trigger("stop", event, this._uiHash()); } this.fromOutside=false; return true; }, _trigger: function(){ if($.Widget.prototype._trigger.apply(this, arguments)===false){ this.cancel(); }}, _uiHash: function(_inst){ var inst=_inst||this; return { helper: inst.helper, placeholder: inst.placeholder||$([]), position: inst.position, originalPosition: inst.originalPosition, offset: inst.positionAbs, item: inst.currentItem, sender: _inst ? _inst.element:null };}}); })(jQuery); (function($, undefined){ var dataSpace="ui-effects-"; $.effects={ effect: {}}; (function(jQuery, undefined){ var stepHooks="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor", rplusequals=/^([\-+])=\s*(\d+\.?\d*)/, stringParsers=[{ re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, parse: function(execResult){ return [ execResult[ 1 ], execResult[ 2 ], execResult[ 3 ], execResult[ 4 ] ]; }}, { re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, parse: function(execResult){ return [ execResult[ 1 ] * 2.55, execResult[ 2 ] * 2.55, execResult[ 3 ] * 2.55, execResult[ 4 ] ]; }}, { re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/, parse: function(execResult){ return [ parseInt(execResult[ 1 ], 16), parseInt(execResult[ 2 ], 16), parseInt(execResult[ 3 ], 16) ]; }}, { re: /#([a-f0-9])([a-f0-9])([a-f0-9])/, parse: function(execResult){ return [ parseInt(execResult[ 1 ] + execResult[ 1 ], 16), parseInt(execResult[ 2 ] + execResult[ 2 ], 16), parseInt(execResult[ 3 ] + execResult[ 3 ], 16) ]; }}, { re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, space: "hsla", parse: function(execResult){ return [ execResult[ 1 ], execResult[ 2 ] / 100, execResult[ 3 ] / 100, execResult[ 4 ] ]; }}], color=jQuery.Color=function(color, green, blue, alpha){ return new jQuery.Color.fn.parse(color, green, blue, alpha); }, spaces={ rgba: { props: { red: { idx: 0, type: "byte" }, green: { idx: 1, type: "byte" }, blue: { idx: 2, type: "byte" }} }, hsla: { props: { hue: { idx: 0, type: "degrees" }, saturation: { idx: 1, type: "percent" }, lightness: { idx: 2, type: "percent" }} }}, propTypes={ "byte": { floor: true, max: 255 }, "percent": { max: 1 }, "degrees": { mod: 360, floor: true }}, support=color.support={}, supportElem=jQuery("

")[ 0 ], colors, each=jQuery.each; supportElem.style.cssText="background-color:rgba(1,1,1,.5)"; support.rgba=supportElem.style.backgroundColor.indexOf("rgba") > -1; each(spaces, function(spaceName, space){ space.cache="_" + spaceName; space.props.alpha={ idx: 3, type: "percent", def: 1 };}); function clamp(value, prop, allowEmpty){ var type=propTypes[ prop.type ]||{}; if(value==null){ return (allowEmpty||!prop.def) ? null:prop.def; } value=type.floor ? ~~value:parseFloat(value); if(isNaN(value)){ return prop.def; } if(type.mod){ return (value + type.mod) % type.mod; } return 0 > value ? 0:type.max < value ? type.max:value; } function stringParse(string){ var inst=color(), rgba=inst._rgba=[]; string=string.toLowerCase(); each(stringParsers, function(i, parser){ var parsed, match=parser.re.exec(string), values=match&&parser.parse(match), spaceName=parser.space||"rgba"; if(values){ parsed=inst[ spaceName ](values); inst[ spaces[ spaceName ].cache ]=parsed[ spaces[ spaceName ].cache ]; rgba=inst._rgba=parsed._rgba; return false; }}); if(rgba.length){ if(rgba.join()==="0,0,0,0"){ jQuery.extend(rgba, colors.transparent); } return inst; } return colors[ string ]; } color.fn=jQuery.extend(color.prototype, { parse: function(red, green, blue, alpha){ if(red===undefined){ this._rgba=[ null, null, null, null ]; return this; } if(red.jquery||red.nodeType){ red=jQuery(red).css(green); green=undefined; } var inst=this, type=jQuery.type(red), rgba=this._rgba=[]; if(green!==undefined){ red=[ red, green, blue, alpha ]; type="array"; } if(type==="string"){ return this.parse(stringParse(red)||colors._default); } if(type==="array"){ each(spaces.rgba.props, function(key, prop){ rgba[ prop.idx ]=clamp(red[ prop.idx ], prop); }); return this; } if(type==="object"){ if(red instanceof color){ each(spaces, function(spaceName, space){ if(red[ space.cache ]){ inst[ space.cache ]=red[ space.cache ].slice(); }}); }else{ each(spaces, function(spaceName, space){ var cache=space.cache; each(space.props, function(key, prop){ if(!inst[ cache ]&&space.to){ if(key==="alpha"||red[ key ]==null){ return; } inst[ cache ]=space.to(inst._rgba); } inst[ cache ][ prop.idx ]=clamp(red[ key ], prop, true); }); if(inst[ cache ]&&jQuery.inArray(null, inst[ cache ].slice(0, 3)) < 0){ inst[ cache ][ 3 ]=1; if(space.from){ inst._rgba=space.from(inst[ cache ]); }} }); } return this; }}, is: function(compare){ var is=color(compare), same=true, inst=this; each(spaces, function(_, space){ var localCache, isCache=is[ space.cache ]; if(isCache){ localCache=inst[ space.cache ]||space.to&&space.to(inst._rgba)||[]; each(space.props, function(_, prop){ if(isCache[ prop.idx ]!=null){ same=(isCache[ prop.idx ]===localCache[ prop.idx ]); return same; }}); } return same; }); return same; }, _space: function(){ var used=[], inst=this; each(spaces, function(spaceName, space){ if(inst[ space.cache ]){ used.push(spaceName); }}); return used.pop(); }, transition: function(other, distance){ var end=color(other), spaceName=end._space(), space=spaces[ spaceName ], startColor=this.alpha()===0 ? color("transparent"):this, start=startColor[ space.cache ]||space.to(startColor._rgba), result=start.slice(); end=end[ space.cache ]; each(space.props, function(key, prop){ var index=prop.idx, startValue=start[ index ], endValue=end[ index ], type=propTypes[ prop.type ]||{}; if(endValue===null){ return; } if(startValue===null){ result[ index ]=endValue; }else{ if(type.mod){ if(endValue - startValue > type.mod / 2){ startValue +=type.mod; }else if(startValue - endValue > type.mod / 2){ startValue -=type.mod; }} result[ index ]=clamp(( endValue - startValue) * distance + startValue, prop); }}); return this[ spaceName ](result); }, blend: function(opaque){ if(this._rgba[ 3 ]===1){ return this; } var rgb=this._rgba.slice(), a=rgb.pop(), blend=color(opaque)._rgba; return color(jQuery.map(rgb, function(v, i){ return(1 - a) * blend[ i ] + a * v; })); }, toRgbaString: function(){ var prefix="rgba(", rgba=jQuery.map(this._rgba, function(v, i){ return v==null ?(i > 2 ? 1:0):v; }); if(rgba[ 3 ]===1){ rgba.pop(); prefix="rgb("; } return prefix + rgba.join() + ")"; }, toHslaString: function(){ var prefix="hsla(", hsla=jQuery.map(this.hsla(), function(v, i){ if(v==null){ v=i > 2 ? 1:0; } if(i&&i < 3){ v=Math.round(v * 100) + "%"; } return v; }); if(hsla[ 3 ]===1){ hsla.pop(); prefix="hsl("; } return prefix + hsla.join() + ")"; }, toHexString: function(includeAlpha){ var rgba=this._rgba.slice(), alpha=rgba.pop(); if(includeAlpha){ rgba.push(~~(alpha * 255)); } return "#" + jQuery.map(rgba, function(v){ v=(v||0).toString(16); return v.length===1 ? "0" + v:v; }).join(""); }, toString: function(){ return this._rgba[ 3 ]===0 ? "transparent":this.toRgbaString(); }}); color.fn.parse.prototype=color.fn; function hue2rgb(p, q, h){ h=(h + 1) % 1; if(h * 6 < 1){ return p + (q - p) * h * 6; } if(h * 2 < 1){ return q; } if(h * 3 < 2){ return p + (q - p) * ((2/3) - h) * 6; } return p; } spaces.hsla.to=function(rgba){ if(rgba[ 0 ]==null||rgba[ 1 ]==null||rgba[ 2 ]==null){ return [ null, null, null, rgba[ 3 ] ]; } var r=rgba[ 0 ] / 255, g=rgba[ 1 ] / 255, b=rgba[ 2 ] / 255, a=rgba[ 3 ], max=Math.max(r, g, b), min=Math.min(r, g, b), diff=max - min, add=max + min, l=add * 0.5, h, s; if(min===max){ h=0; }else if(r===max){ h=(60 *(g - b) / diff) + 360; }else if(g===max){ h=(60 *(b - r) / diff) + 120; }else{ h=(60 *(r - g) / diff) + 240; } if(diff===0){ s=0; }else if(l <=0.5){ s=diff / add; }else{ s=diff /(2 - add); } return [ Math.round(h) % 360, s, l, a==null ? 1:a ]; }; spaces.hsla.from=function(hsla){ if(hsla[ 0 ]==null||hsla[ 1 ]==null||hsla[ 2 ]==null){ return [ null, null, null, hsla[ 3 ] ]; } var h=hsla[ 0 ] / 360, s=hsla[ 1 ], l=hsla[ 2 ], a=hsla[ 3 ], q=l <=0.5 ? l *(1 + s):l + s - l * s, p=2 * l - q; return [ Math.round(hue2rgb(p, q, h +(1 / 3)) * 255), Math.round(hue2rgb(p, q, h) * 255), Math.round(hue2rgb(p, q, h -(1 / 3)) * 255), a ]; }; each(spaces, function(spaceName, space){ var props=space.props, cache=space.cache, to=space.to, from=space.from; color.fn[ spaceName ]=function(value){ if(to&&!this[ cache ]){ this[ cache ]=to(this._rgba); } if(value===undefined){ return this[ cache ].slice(); } var ret, type=jQuery.type(value), arr=(type==="array"||type==="object") ? value:arguments, local=this[ cache ].slice(); each(props, function(key, prop){ var val=arr[ type==="object" ? key:prop.idx ]; if(val==null){ val=local[ prop.idx ]; } local[ prop.idx ]=clamp(val, prop); }); if(from){ ret=color(from(local)); ret[ cache ]=local; return ret; }else{ return color(local); }}; each(props, function(key, prop){ if(color.fn[ key ]){ return; } color.fn[ key ]=function(value){ var vtype=jQuery.type(value), fn=(key==="alpha" ?(this._hsla ? "hsla":"rgba"):spaceName), local=this[ fn ](), cur=local[ prop.idx ], match; if(vtype==="undefined"){ return cur; } if(vtype==="function"){ value=value.call(this, cur); vtype=jQuery.type(value); } if(value==null&&prop.empty){ return this; } if(vtype==="string"){ match=rplusequals.exec(value); if(match){ value=cur + parseFloat(match[ 2 ]) *(match[ 1 ]==="+" ? 1:-1); }} local[ prop.idx ]=value; return this[ fn ](local); };}); }); color.hook=function(hook){ var hooks=hook.split(" "); each(hooks, function(i, hook){ jQuery.cssHooks[ hook ]={ set: function(elem, value){ var parsed, curElem, backgroundColor=""; if(value!=="transparent"&&(jQuery.type(value)!=="string"||(parsed=stringParse(value)))){ value=color(parsed||value); if(!support.rgba&&value._rgba[ 3 ]!==1){ curElem=hook==="backgroundColor" ? elem.parentNode:elem; while ( (backgroundColor===""||backgroundColor==="transparent") && curElem&&curElem.style ){ try { backgroundColor=jQuery.css(curElem, "backgroundColor"); curElem=curElem.parentNode; } catch(e){ }} value=value.blend(backgroundColor&&backgroundColor!=="transparent" ? backgroundColor : "_default"); } value=value.toRgbaString(); } try { elem.style[ hook ]=value; } catch(e){ }} }; jQuery.fx.step[ hook ]=function(fx){ if(!fx.colorInit){ fx.start=color(fx.elem, hook); fx.end=color(fx.end); fx.colorInit=true; } jQuery.cssHooks[ hook ].set(fx.elem, fx.start.transition(fx.end, fx.pos)); };}); }; color.hook(stepHooks); jQuery.cssHooks.borderColor={ expand: function(value){ var expanded={}; each([ "Top", "Right", "Bottom", "Left" ], function(i, part){ expanded[ "border" + part + "Color" ]=value; }); return expanded; }}; colors=jQuery.Color.names={ aqua: "#00ffff", black: "#000000", blue: "#0000ff", fuchsia: "#ff00ff", gray: "#808080", green: "#008000", lime: "#00ff00", maroon: "#800000", navy: "#000080", olive: "#808000", purple: "#800080", red: "#ff0000", silver: "#c0c0c0", teal: "#008080", white: "#ffffff", yellow: "#ffff00", transparent: [ null, null, null, 0 ], _default: "#ffffff" };})(jQuery); (function(){ var classAnimationActions=[ "add", "remove", "toggle" ], shorthandStyles={ border: 1, borderBottom: 1, borderColor: 1, borderLeft: 1, borderRight: 1, borderTop: 1, borderWidth: 1, margin: 1, padding: 1 }; $.each([ "borderLeftStyle", "borderRightStyle", "borderBottomStyle", "borderTopStyle" ], function(_, prop){ $.fx.step[ prop ]=function(fx){ if(fx.end!=="none"&&!fx.setAttr||fx.pos===1&&!fx.setAttr){ jQuery.style(fx.elem, prop, fx.end); fx.setAttr=true; }};}); function getElementStyles(elem){ var key, len, style=elem.ownerDocument.defaultView ? elem.ownerDocument.defaultView.getComputedStyle(elem, null) : elem.currentStyle, styles={}; if(style&&style.length&&style[ 0 ]&&style[ style[ 0 ] ]){ len=style.length; while(len--){ key=style[ len ]; if(typeof style[ key ]==="string"){ styles[ $.camelCase(key) ]=style[ key ]; }} }else{ for(key in style){ if(typeof style[ key ]==="string"){ styles[ key ]=style[ key ]; }} } return styles; } function styleDifference(oldStyle, newStyle){ var diff={}, name, value; for(name in newStyle){ value=newStyle[ name ]; if(oldStyle[ name ]!==value){ if(!shorthandStyles[ name ]){ if($.fx.step[ name ]||!isNaN(parseFloat(value))){ diff[ name ]=value; }} }} return diff; } if(!$.fn.addBack){ $.fn.addBack=function(selector){ return this.add(selector==null ? this.prevObject:this.prevObject.filter(selector) ); };} $.effects.animateClass=function(value, duration, easing, callback){ var o=$.speed(duration, easing, callback); return this.queue(function(){ var animated=$(this), baseClass=animated.attr("class")||"", applyClassChange, allAnimations=o.children ? animated.find("*").addBack():animated; allAnimations=allAnimations.map(function(){ var el=$(this); return { el: el, start: getElementStyles(this) };}); applyClassChange=function(){ $.each(classAnimationActions, function(i, action){ if(value[ action ]){ animated[ action + "Class" ](value[ action ]); }}); }; applyClassChange(); allAnimations=allAnimations.map(function(){ this.end=getElementStyles(this.el[ 0 ]); this.diff=styleDifference(this.start, this.end); return this; }); animated.attr("class", baseClass); allAnimations=allAnimations.map(function(){ var styleInfo=this, dfd=$.Deferred(), opts=$.extend({}, o, { queue: false, complete: function(){ dfd.resolve(styleInfo); }}); this.el.animate(this.diff, opts); return dfd.promise(); }); $.when.apply($, allAnimations.get()).done(function(){ applyClassChange(); $.each(arguments, function(){ var el=this.el; $.each(this.diff, function(key){ el.css(key, ""); }); }); o.complete.call(animated[ 0 ]); }); }); }; $.fn.extend({ addClass: (function(orig){ return function(classNames, speed, easing, callback){ return speed ? $.effects.animateClass.call(this, { add: classNames }, speed, easing, callback) : orig.apply(this, arguments); };})($.fn.addClass), removeClass: (function(orig){ return function(classNames, speed, easing, callback){ return arguments.length > 1 ? $.effects.animateClass.call(this, { remove: classNames }, speed, easing, callback) : orig.apply(this, arguments); };})($.fn.removeClass), toggleClass: (function(orig){ return function(classNames, force, speed, easing, callback){ if(typeof force==="boolean"||force===undefined){ if(!speed){ return orig.apply(this, arguments); }else{ return $.effects.animateClass.call(this, (force ? { add: classNames }:{ remove: classNames }), speed, easing, callback); }}else{ return $.effects.animateClass.call(this, { toggle: classNames }, force, speed, easing); }};})($.fn.toggleClass), switchClass: function(remove, add, speed, easing, callback){ return $.effects.animateClass.call(this, { add: add, remove: remove }, speed, easing, callback); }}); })(); (function(){ $.extend($.effects, { version: "1.10.3", save: function(element, set){ for(var i=0; i < set.length; i++){ if(set[ i ]!==null){ element.data(dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ]); }} }, restore: function(element, set){ var val, i; for(i=0; i < set.length; i++){ if(set[ i ]!==null){ val=element.data(dataSpace + set[ i ]); if(val===undefined){ val=""; } element.css(set[ i ], val); }} }, setMode: function(el, mode){ if(mode==="toggle"){ mode=el.is(":hidden") ? "show":"hide"; } return mode; }, getBaseline: function(origin, original){ var y, x; switch(origin[ 0 ]){ case "top": y=0; break; case "middle": y=0.5; break; case "bottom": y=1; break; default: y=origin[ 0 ] / original.height; } switch(origin[ 1 ]){ case "left": x=0; break; case "center": x=0.5; break; case "right": x=1; break; default: x=origin[ 1 ] / original.width; } return { x: x, y: y };}, createWrapper: function(element){ if(element.parent().is(".ui-effects-wrapper")){ return element.parent(); } var props={ width: element.outerWidth(true), height: element.outerHeight(true), "float": element.css("float") }, wrapper=$("

") .addClass("ui-effects-wrapper") .css({ fontSize: "100%", background: "transparent", border: "none", margin: 0, padding: 0 }), size={ width: element.width(), height: element.height() }, active=document.activeElement; try { active.id; } catch(e){ active=document.body; } element.wrap(wrapper); if(element[ 0 ]===active||$.contains(element[ 0 ], active)){ $(active).focus(); } wrapper=element.parent(); if(element.css("position")==="static"){ wrapper.css({ position: "relative" }); element.css({ position: "relative" }); }else{ $.extend(props, { position: element.css("position"), zIndex: element.css("z-index") }); $.each([ "top", "left", "bottom", "right" ], function(i, pos){ props[ pos ]=element.css(pos); if(isNaN(parseInt(props[ pos ], 10))){ props[ pos ]="auto"; }}); element.css({ position: "relative", top: 0, left: 0, right: "auto", bottom: "auto" }); } element.css(size); return wrapper.css(props).show(); }, removeWrapper: function(element){ var active=document.activeElement; if(element.parent().is(".ui-effects-wrapper")){ element.parent().replaceWith(element); if(element[ 0 ]===active||$.contains(element[ 0 ], active)){ $(active).focus(); }} return element; }, setTransition: function(element, list, factor, value){ value=value||{}; $.each(list, function(i, x){ var unit=element.cssUnit(x); if(unit[ 0 ] > 0){ value[ x ]=unit[ 0 ] * factor + unit[ 1 ]; }}); return value; }}); function _normalizeArguments(effect, options, speed, callback){ if($.isPlainObject(effect)){ options=effect; effect=effect.effect; } effect={ effect: effect }; if(options==null){ options={};} if($.isFunction(options)){ callback=options; speed=null; options={};} if(typeof options==="number"||$.fx.speeds[ options ]){ callback=speed; speed=options; options={};} if($.isFunction(speed)){ callback=speed; speed=null; } if(options){ $.extend(effect, options); } speed=speed||options.duration; effect.duration=$.fx.off ? 0 : typeof speed==="number" ? speed : speed in $.fx.speeds ? $.fx.speeds[ speed ] : $.fx.speeds._default; effect.complete=callback||options.complete; return effect; } function standardAnimationOption(option){ if(!option||typeof option==="number"||$.fx.speeds[ option ]){ return true; } if(typeof option==="string"&&!$.effects.effect[ option ]){ return true; } if($.isFunction(option)){ return true; } if(typeof option==="object"&&!option.effect){ return true; } return false; } $.fn.extend({ effect: function(){ var args=_normalizeArguments.apply(this, arguments), mode=args.mode, queue=args.queue, effectMethod=$.effects.effect[ args.effect ]; if($.fx.off||!effectMethod){ if(mode){ return this[ mode ](args.duration, args.complete); }else{ return this.each(function(){ if(args.complete){ args.complete.call(this); }}); }} function run(next){ var elem=$(this), complete=args.complete, mode=args.mode; function done(){ if($.isFunction(complete)){ complete.call(elem[0]); } if($.isFunction(next)){ next(); }} if(elem.is(":hidden") ? mode==="hide":mode==="show"){ elem[ mode ](); done(); }else{ effectMethod.call(elem[0], args, done); }} return queue===false ? this.each(run):this.queue(queue||"fx", run); }, show: (function(orig){ return function(option){ if(standardAnimationOption(option)){ return orig.apply(this, arguments); }else{ var args=_normalizeArguments.apply(this, arguments); args.mode="show"; return this.effect.call(this, args); }};})($.fn.show), hide: (function(orig){ return function(option){ if(standardAnimationOption(option)){ return orig.apply(this, arguments); }else{ var args=_normalizeArguments.apply(this, arguments); args.mode="hide"; return this.effect.call(this, args); }};})($.fn.hide), toggle: (function(orig){ return function(option){ if(standardAnimationOption(option)||typeof option==="boolean"){ return orig.apply(this, arguments); }else{ var args=_normalizeArguments.apply(this, arguments); args.mode="toggle"; return this.effect.call(this, args); }};})($.fn.toggle), cssUnit: function(key){ var style=this.css(key), val=[]; $.each([ "em", "px", "%", "pt" ], function(i, unit){ if(style.indexOf(unit) > 0){ val=[ parseFloat(style), unit ]; }}); return val; }}); })(); (function(){ var baseEasings={}; $.each([ "Quad", "Cubic", "Quart", "Quint", "Expo" ], function(i, name){ baseEasings[ name ]=function(p){ return Math.pow(p, i + 2); };}); $.extend(baseEasings, { Sine: function(p){ return 1 - Math.cos(p * Math.PI / 2); }, Circ: function(p){ return 1 - Math.sqrt(1 - p * p); }, Elastic: function(p){ return p===0||p===1 ? p : -Math.pow(2, 8 * (p - 1)) * Math.sin(( (p - 1) * 80 - 7.5) * Math.PI / 15); }, Back: function(p){ return p * p *(3 * p - 2); }, Bounce: function(p){ var pow2, bounce=4; while(p <(( pow2=Math.pow(2, --bounce)) - 1) / 11){} return 1 / Math.pow(4, 3 - bounce) - 7.5625 * Math.pow(( pow2 * 3 - 2) / 22 - p, 2); }}); $.each(baseEasings, function(name, easeIn){ $.easing[ "easeIn" + name ]=easeIn; $.easing[ "easeOut" + name ]=function(p){ return 1 - easeIn(1 - p); }; $.easing[ "easeInOut" + name ]=function(p){ return p < 0.5 ? easeIn(p * 2) / 2 : 1 - easeIn(p * -2 + 2) / 2; };}); })(); })(jQuery); (function($, undefined){ var uid=0, hideProps={}, showProps={}; hideProps.height=hideProps.paddingTop=hideProps.paddingBottom = hideProps.borderTopWidth=hideProps.borderBottomWidth="hide"; showProps.height=showProps.paddingTop=showProps.paddingBottom = showProps.borderTopWidth=showProps.borderBottomWidth="show"; $.widget("ui.accordion", { version: "1.10.3", options: { active: 0, animate: {}, collapsible: false, event: "click", header: "> li > :first-child,> :not(li):even", heightStyle: "auto", icons: { activeHeader: "ui-icon-triangle-1-s", header: "ui-icon-triangle-1-e" }, activate: null, beforeActivate: null }, _create: function(){ var options=this.options; this.prevShow=this.prevHide=$(); this.element.addClass("ui-accordion ui-widget ui-helper-reset") .attr("role", "tablist"); if(!options.collapsible&&(options.active===false||options.active==null)){ options.active=0; } this._processPanels(); if(options.active < 0){ options.active +=this.headers.length; } this._refresh(); }, _getCreateEventData: function(){ return { header: this.active, panel: !this.active.length ? $():this.active.next(), content: !this.active.length ? $():this.active.next() };}, _createIcons: function(){ var icons=this.options.icons; if(icons){ $("") .addClass("ui-accordion-header-icon ui-icon " + icons.header) .prependTo(this.headers); this.active.children(".ui-accordion-header-icon") .removeClass(icons.header) .addClass(icons.activeHeader); this.headers.addClass("ui-accordion-icons"); }}, _destroyIcons: function(){ this.headers .removeClass("ui-accordion-icons") .children(".ui-accordion-header-icon") .remove(); }, _destroy: function(){ var contents; this.element .removeClass("ui-accordion ui-widget ui-helper-reset") .removeAttr("role"); this.headers .removeClass("ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top") .removeAttr("role") .removeAttr("aria-selected") .removeAttr("aria-controls") .removeAttr("tabIndex") .each(function(){ if(/^ui-accordion/.test(this.id)){ this.removeAttribute("id"); }}); this._destroyIcons(); contents=this.headers.next() .css("display", "") .removeAttr("role") .removeAttr("aria-expanded") .removeAttr("aria-hidden") .removeAttr("aria-labelledby") .removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled") .each(function(){ if(/^ui-accordion/.test(this.id)){ this.removeAttribute("id"); }}); if(this.options.heightStyle!=="content"){ contents.css("height", ""); }}, _setOption: function(key, value){ if(key==="active"){ this._activate(value); return; } if(key==="event"){ if(this.options.event){ this._off(this.headers, this.options.event); } this._setupEvents(value); } this._super(key, value); if(key==="collapsible"&&!value&&this.options.active===false){ this._activate(0); } if(key==="icons"){ this._destroyIcons(); if(value){ this._createIcons(); }} if(key==="disabled"){ this.headers.add(this.headers.next()) .toggleClass("ui-state-disabled", !!value); }}, _keydown: function(event){ if(event.altKey||event.ctrlKey){ return; } var keyCode=$.ui.keyCode, length=this.headers.length, currentIndex=this.headers.index(event.target), toFocus=false; switch(event.keyCode){ case keyCode.RIGHT: case keyCode.DOWN: toFocus=this.headers[(currentIndex + 1) % length ]; break; case keyCode.LEFT: case keyCode.UP: toFocus=this.headers[(currentIndex - 1 + length) % length ]; break; case keyCode.SPACE: case keyCode.ENTER: this._eventHandler(event); break; case keyCode.HOME: toFocus=this.headers[ 0 ]; break; case keyCode.END: toFocus=this.headers[ length - 1 ]; break; } if(toFocus){ $(event.target).attr("tabIndex", -1); $(toFocus).attr("tabIndex", 0); toFocus.focus(); event.preventDefault(); }}, _panelKeyDown:function(event){ if(event.keyCode===$.ui.keyCode.UP&&event.ctrlKey){ $(event.currentTarget).prev().focus(); }}, refresh: function(){ var options=this.options; this._processPanels(); if(( options.active===false&&options.collapsible===true)||!this.headers.length){ options.active=false; this.active=$(); }else if(options.active===false){ this._activate(0); }else if(this.active.length&&!$.contains(this.element[ 0 ], this.active[ 0 ])){ if(this.headers.length===this.headers.find(".ui-state-disabled").length){ options.active=false; this.active=$(); }else{ this._activate(Math.max(0, options.active - 1)); }}else{ options.active=this.headers.index(this.active); } this._destroyIcons(); this._refresh(); }, _processPanels: function(){ this.headers=this.element.find(this.options.header) .addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all"); this.headers.next() .addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom") .filter(":not(.ui-accordion-content-active)") .hide(); }, _refresh: function(){ var maxHeight, options=this.options, heightStyle=options.heightStyle, parent=this.element.parent(), accordionId=this.accordionId="ui-accordion-" + (this.element.attr("id")||++uid); this.active=this._findActive(options.active) .addClass("ui-accordion-header-active ui-state-active ui-corner-top") .removeClass("ui-corner-all"); this.active.next() .addClass("ui-accordion-content-active") .show(); this.headers .attr("role", "tab") .each(function(i){ var header=$(this), headerId=header.attr("id"), panel=header.next(), panelId=panel.attr("id"); if(!headerId){ headerId=accordionId + "-header-" + i; header.attr("id", headerId); } if(!panelId){ panelId=accordionId + "-panel-" + i; panel.attr("id", panelId); } header.attr("aria-controls", panelId); panel.attr("aria-labelledby", headerId); }) .next() .attr("role", "tabpanel"); this.headers .not(this.active) .attr({ "aria-selected": "false", tabIndex: -1 }) .next() .attr({ "aria-expanded": "false", "aria-hidden": "true" }) .hide(); if(!this.active.length){ this.headers.eq(0).attr("tabIndex", 0); }else{ this.active.attr({ "aria-selected": "true", tabIndex: 0 }) .next() .attr({ "aria-expanded": "true", "aria-hidden": "false" }); } this._createIcons(); this._setupEvents(options.event); if(heightStyle==="fill"){ maxHeight=parent.height(); this.element.siblings(":visible").each(function(){ var elem=$(this), position=elem.css("position"); if(position==="absolute"||position==="fixed"){ return; } maxHeight -=elem.outerHeight(true); }); this.headers.each(function(){ maxHeight -=$(this).outerHeight(true); }); this.headers.next() .each(function(){ $(this).height(Math.max(0, maxHeight - $(this).innerHeight() + $(this).height())); }) .css("overflow", "auto"); }else if(heightStyle==="auto"){ maxHeight=0; this.headers.next() .each(function(){ maxHeight=Math.max(maxHeight, $(this).css("height", "").height()); }) .height(maxHeight); }}, _activate: function(index){ var active=this._findActive(index)[ 0 ]; if(active===this.active[ 0 ]){ return; } active=active||this.active[ 0 ]; this._eventHandler({ target: active, currentTarget: active, preventDefault: $.noop }); }, _findActive: function(selector){ return typeof selector==="number" ? this.headers.eq(selector):$(); }, _setupEvents: function(event){ var events={ keydown: "_keydown" }; if(event){ $.each(event.split(" "), function(index, eventName){ events[ eventName ]="_eventHandler"; }); } this._off(this.headers.add(this.headers.next())); this._on(this.headers, events); this._on(this.headers.next(), { keydown: "_panelKeyDown" }); this._hoverable(this.headers); this._focusable(this.headers); }, _eventHandler: function(event){ var options=this.options, active=this.active, clicked=$(event.currentTarget), clickedIsActive=clicked[ 0 ]===active[ 0 ], collapsing=clickedIsActive&&options.collapsible, toShow=collapsing ? $():clicked.next(), toHide=active.next(), eventData={ oldHeader: active, oldPanel: toHide, newHeader: collapsing ? $():clicked, newPanel: toShow }; event.preventDefault(); if((clickedIsActive&&!options.collapsible) || (this._trigger("beforeActivate", event, eventData)===false)){ return; } options.active=collapsing ? false:this.headers.index(clicked); this.active=clickedIsActive ? $():clicked; this._toggle(eventData); active.removeClass("ui-accordion-header-active ui-state-active"); if(options.icons){ active.children(".ui-accordion-header-icon") .removeClass(options.icons.activeHeader) .addClass(options.icons.header); } if(!clickedIsActive){ clicked .removeClass("ui-corner-all") .addClass("ui-accordion-header-active ui-state-active ui-corner-top"); if(options.icons){ clicked.children(".ui-accordion-header-icon") .removeClass(options.icons.header) .addClass(options.icons.activeHeader); } clicked .next() .addClass("ui-accordion-content-active"); }}, _toggle: function(data){ var toShow=data.newPanel, toHide=this.prevShow.length ? this.prevShow:data.oldPanel; this.prevShow.add(this.prevHide).stop(true, true); this.prevShow=toShow; this.prevHide=toHide; if(this.options.animate){ this._animate(toShow, toHide, data); }else{ toHide.hide(); toShow.show(); this._toggleComplete(data); } toHide.attr({ "aria-expanded": "false", "aria-hidden": "true" }); toHide.prev().attr("aria-selected", "false"); if(toShow.length&&toHide.length){ toHide.prev().attr("tabIndex", -1); }else if(toShow.length){ this.headers.filter(function(){ return $(this).attr("tabIndex")===0; }) .attr("tabIndex", -1); } toShow .attr({ "aria-expanded": "true", "aria-hidden": "false" }) .prev() .attr({ "aria-selected": "true", tabIndex: 0 }); }, _animate: function(toShow, toHide, data){ var total, easing, duration, that=this, adjust=0, down=toShow.length && (!toHide.length||(toShow.index() < toHide.index())), animate=this.options.animate||{}, options=down&&animate.down||animate, complete=function(){ that._toggleComplete(data); }; if(typeof options==="number"){ duration=options; } if(typeof options==="string"){ easing=options; } easing=easing||options.easing||animate.easing; duration=duration||options.duration||animate.duration; if(!toHide.length){ return toShow.animate(showProps, duration, easing, complete); } if(!toShow.length){ return toHide.animate(hideProps, duration, easing, complete); } total=toShow.show().outerHeight(); toHide.animate(hideProps, { duration: duration, easing: easing, step: function(now, fx){ fx.now=Math.round(now); }}); toShow .hide() .animate(showProps, { duration: duration, easing: easing, complete: complete, step: function(now, fx){ fx.now=Math.round(now); if(fx.prop!=="height"){ adjust +=fx.now; }else if(that.options.heightStyle!=="content"){ fx.now=Math.round(total - toHide.outerHeight() - adjust); adjust=0; }} }); }, _toggleComplete: function(data){ var toHide=data.oldPanel; toHide .removeClass("ui-accordion-content-active") .prev() .removeClass("ui-corner-top") .addClass("ui-corner-all"); if(toHide.length){ toHide.parent()[0].className=toHide.parent()[0].className; } this._trigger("activate", null, data); }}); })(jQuery); (function($, undefined){ var requestIndex=0; $.widget("ui.autocomplete", { version: "1.10.3", defaultElement: "", options: { appendTo: null, autoFocus: false, delay: 300, minLength: 1, position: { my: "left top", at: "left bottom", collision: "none" }, source: null, change: null, close: null, focus: null, open: null, response: null, search: null, select: null }, pending: 0, _create: function(){ var suppressKeyPress, suppressKeyPressRepeat, suppressInput, nodeName=this.element[0].nodeName.toLowerCase(), isTextarea=nodeName==="textarea", isInput=nodeName==="input"; this.isMultiLine = isTextarea ? true : isInput ? false : this.element.prop("isContentEditable"); this.valueMethod=this.element[ isTextarea||isInput ? "val":"text" ]; this.isNewMenu=true; this.element .addClass("ui-autocomplete-input") .attr("autocomplete", "off"); this._on(this.element, { keydown: function(event){ if(this.element.prop("readOnly")){ suppressKeyPress=true; suppressInput=true; suppressKeyPressRepeat=true; return; } suppressKeyPress=false; suppressInput=false; suppressKeyPressRepeat=false; var keyCode=$.ui.keyCode; switch(event.keyCode){ case keyCode.PAGE_UP: suppressKeyPress=true; this._move("previousPage", event); break; case keyCode.PAGE_DOWN: suppressKeyPress=true; this._move("nextPage", event); break; case keyCode.UP: suppressKeyPress=true; this._keyEvent("previous", event); break; case keyCode.DOWN: suppressKeyPress=true; this._keyEvent("next", event); break; case keyCode.ENTER: case keyCode.NUMPAD_ENTER: if(this.menu.active){ suppressKeyPress=true; event.preventDefault(); this.menu.select(event); } break; case keyCode.TAB: if(this.menu.active){ this.menu.select(event); } break; case keyCode.ESCAPE: if(this.menu.element.is(":visible")){ this._value(this.term); this.close(event); event.preventDefault(); } break; default: suppressKeyPressRepeat=true; this._searchTimeout(event); break; }}, keypress: function(event){ if(suppressKeyPress){ suppressKeyPress=false; if(!this.isMultiLine||this.menu.element.is(":visible")){ event.preventDefault(); } return; } if(suppressKeyPressRepeat){ return; } var keyCode=$.ui.keyCode; switch(event.keyCode){ case keyCode.PAGE_UP: this._move("previousPage", event); break; case keyCode.PAGE_DOWN: this._move("nextPage", event); break; case keyCode.UP: this._keyEvent("previous", event); break; case keyCode.DOWN: this._keyEvent("next", event); break; }}, input: function(event){ if(suppressInput){ suppressInput=false; event.preventDefault(); return; } this._searchTimeout(event); }, focus: function(){ this.selectedItem=null; this.previous=this._value(); }, blur: function(event){ if(this.cancelBlur){ delete this.cancelBlur; return; } clearTimeout(this.searching); this.close(event); this._change(event); }}); this._initSource(); this.menu=$("
").appendTo(t.errorLog):0!=o.onSelect(r)&&m(o,t,r)}),S(document).on("dragenter",function(e){e.stopPropagation(),e.preventDefault()}),S(document).on("dragover",function(e){e.stopPropagation(),e.preventDefault(),a.css("border","2px dashed #ddd")}),S(document).on("drop",function(e){e.stopPropagation(),e.preventDefault(),a.css("border","2px dashed #ddd")})}else S(c).before(i);!function l(n,d,u,p){var e="ajax-upload-id-"+(new Date).getTime();var c=S("
");var r="";u.multiple&&(u.fileName.indexOf("[]")!=u.fileName.length-2&&(u.fileName+="[]"),r="");var t=S(r).appendTo(c);t.change(function(){n.errorLog.html("");u.allowedTypes.toLowerCase().split(",");var e=[];if(this.files){for(s=0;s"+u.extErrorStr+"").appendTo(n.errorLog));if(t.push({name:r,size:"NA"}),0==u.onSelect(t))return}if(g(u,n),p.unbind("click"),c.hide(),l(n,d,u,p),c.addClass(d),C.fileapi&&C.formdata){c.removeClass(d);var o=this.files;m(u,n,o)}else{for(var a="",s=0;s":a+=e[s]+"
",n.fileCounter++;if(-1!=u.maxFileCount&&n.selectedFiles+e.length>u.maxFileCount)return void(u.showError&&S("
"+u.maxFileCountErrorStr+"
").appendTo(n.errorLog));n.selectedFiles+=e.length;var i=new b(n,u);i.filename.html(a),w(c,u,i,e,n)}});c.css({margin:0,padding:0});var o=S(p).width()+10;10==o&&(o=120);var a=p.height()+10;10==a&&(a=35);p.css({position:"relative",overflow:"hidden",cursor:"default"});t.css({position:"absolute",cursor:"pointer",top:"0px",width:"100%",height:"34px",left:"0px","z-index":"100",opacity:"0.0",filter:"alpha(opacity=0)","-ms-filter":"alpha(opacity=0)","-khtml-opacity":"0.0","-moz-opacity":"0.0"});c.appendTo(p)}(c,s,p,i)}else window.setTimeout(e,10);var t,o,a}(),this.startUpload=function(){S("."+this.formGroup).each(function(e,r){S(this).is("form")&&S(this).submit()})},this.stopUpload=function(){S(".upload-red").each(function(e,r){S(this).hasClass(c.formGroup)&&S(this).click()})};var h=!(this.getResponses=function(){return this.responses});function f(e){var r,t,o=[],a=(o="string"==jQuery.type(e)?e.split("&"):S.param(e).split("&")).length,s=[];for(r=0;re.maxFileSize)e.showError&&S("
"+e.sizeErrorStr+"
").appendTo(r.errorLog);else if(-1!=e.maxFileCount&&r.selectedFiles>=e.maxFileCount)e.showError&&S("
"+e.maxFileCountErrorStr+"
").appendTo(r.errorLog);else{r.selectedFiles++;var a=e,s=new FormData,i=e.fileName.replace("[]","");s.append(i,t[o]);var l=e.formData;if(l)for(var n=f(l),d=0;d");c.appendTo("body");var h=[];h.push(t[o].name),w(c,a,u,h,r),r.fileCounter++}else e.showError&&S("
"+e.extErrorStr+"
").appendTo(r.errorLog)}function v(e,r,t){var o=r.allowedTypes.toLowerCase().split(","),a=t.split(".").pop().toLowerCase();return!("*"!=r.allowedTypes&&jQuery.inArray(a,o)<0)}function g(a,e){if(a.showFileCounter){var s=S(".upload-filename").length;e.fileCounter=s+1,S(".upload-filename").each(function(e,r){var t=S(this).html().split(a.fileCounterStyle),o=(parseInt(t[0]),s+a.fileCounterStyle+t[1]);S(this).html(o),s--})}}function b(e,r){return this.statusbar=S("
"),this.filename=S("
").appendTo(this.statusbar),this.progressDiv=S("
").appendTo(this.statusbar).hide(),this.progressbar=S("
").appendTo(this.progressDiv),this.abort=S("
"+r.abortStr+"
").appendTo(this.statusbar).hide(),this.cancel=S("
"+r.cancelStr+"
").appendTo(this.statusbar).hide(),this.done=S("
"+r.doneStr+"
").appendTo(this.statusbar).hide(),this.del=S("
"+r.deletelStr+"
").appendTo(this.statusbar).hide(),e.errorLog.after(this.statusbar),this}function w(i,l,n,d,u){var e={cache:!1,contentType:!1,processData:!1,forceSync:!1,data:l.formData,formData:l.fileData,dataType:l.returnType,beforeSubmit:function(e,r,t){if(0!=l.onSubmit.call(this,d)){var o=l.dynamicFormData();if(o){var a=f(o);if(a)for(var s=0;s"+l.uploadErrorStr+"
"),n.cancel.show(),i.remove(),n.cancel.click(function(){n.statusbar.remove()}),!1},beforeSend:function(e,r){n.progressDiv.show(),n.cancel.hide(),n.done.hide(),l.showAbort&&(n.abort.show(),n.abort.click(function(){e.abort(),u.selectedFiles-=d.length})),C.formdata?n.progressbar.width("1%"):n.progressbar.width("5%")},uploadProgress:function(e,r,t,o){98ERROR: "+t+"")):(n.statusbar.hide(),n.statusbar.remove()),u.selectedFiles-=d.length),i.remove(),u.fCounter+=d.length}};l.autoSubmit?i.ajaxSubmit(e):(l.showCancel&&(n.cancel.show(),n.cancel.click(function(){i.remove(),n.statusbar.remove(),u.selectedFiles-=d.length,g(l,u)})),i.ajaxForm(e))}return this}}(jQuery); (function(factory){ if(typeof define=='function'&&define.amd) define('picker', ['jquery'], factory) else if(typeof exports=='object') module.exports=factory(require('jquery')) else this.Picker=factory(jQuery) }(function($){ var $window=$(window) var $document=$(document) var $html=$(document.documentElement) var supportsTransitions=document.documentElement.style.transition!=null function PickerConstructor(ELEMENT, NAME, COMPONENT, OPTIONS){ if(!ELEMENT) return PickerConstructor var IS_DEFAULT_THEME=false, STATE={ id: ELEMENT.id||'P' + Math.abs(~~(Math.random() * new Date())) }, SETTINGS=COMPONENT ? $.extend(true, {}, COMPONENT.defaults, OPTIONS):OPTIONS||{}, CLASSES=$.extend({}, PickerConstructor.klasses(), SETTINGS.klass), $ELEMENT=$(ELEMENT), PickerInstance=function(){ return this.start() }, P=PickerInstance.prototype={ constructor: PickerInstance, $node: $ELEMENT, start: function(){ if(STATE&&STATE.start) return P STATE.methods={} STATE.start=true STATE.open=false STATE.type=ELEMENT.type ELEMENT.autofocus=ELEMENT==getActiveElement() ELEMENT.readOnly = !SETTINGS.editable ELEMENT.id=ELEMENT.id||STATE.id if(ELEMENT.type!='text'){ ELEMENT.type='text' } P.component=new COMPONENT(P, SETTINGS) P.$root=$('
') prepareElementRoot() P.$holder=$(createWrappedComponent()).appendTo(P.$root) prepareElementHolder() if(SETTINGS.formatSubmit){ prepareElementHidden() } prepareElement() if(SETTINGS.containerHidden) $(SETTINGS.containerHidden).append(P._hidden) else $ELEMENT.after(P._hidden) if(SETTINGS.container) $(SETTINGS.container).append(P.$root) else $ELEMENT.after(P.$root) P.on({ start: P.component.onStart, render: P.component.onRender, stop: P.component.onStop, open: P.component.onOpen, close: P.component.onClose, set: P.component.onSet }).on({ start: SETTINGS.onStart, render: SETTINGS.onRender, stop: SETTINGS.onStop, open: SETTINGS.onOpen, close: SETTINGS.onClose, set: SETTINGS.onSet }) IS_DEFAULT_THEME=isUsingDefaultTheme(P.$holder[0]) if(ELEMENT.autofocus){ P.open() } return P.trigger('start').trigger('render') }, render: function(entireComponent){ if(entireComponent){ P.$holder=$(createWrappedComponent()) prepareElementHolder() P.$root.html(P.$holder) } else P.$root.find('.' + CLASSES.box).html(P.component.nodes(STATE.open)) return P.trigger('render') }, stop: function(){ if(!STATE.start) return P P.close() if(P._hidden){ P._hidden.parentNode.removeChild(P._hidden) } P.$root.remove() $ELEMENT.removeClass(CLASSES.input).removeData(NAME) setTimeout(function(){ $ELEMENT.off('.' + STATE.id) }, 0) ELEMENT.type=STATE.type ELEMENT.readOnly=false P.trigger('stop') STATE.methods={} STATE.start=false return P }, open: function(dontGiveFocus){ if(STATE.open) return P $ELEMENT.addClass(CLASSES.active) aria(ELEMENT, 'expanded', true) setTimeout(function(){ P.$root.addClass(CLASSES.opened) aria(P.$root[0], 'hidden', false) }, 0) if(dontGiveFocus!==false){ STATE.open=true if(IS_DEFAULT_THEME){ $('body'). css('overflow', 'hidden'). css('padding-right', '+=' + getScrollbarWidth()) } focusPickerOnceOpened() $document.on('click.' + STATE.id + ' focusin.' + STATE.id, function(event){ var target=getRealEventTarget(event, ELEMENT) if(! event.isSimulated&&target!=ELEMENT&&target!=document&&event.which!=3){ P.close(target===P.$holder[0]) }}).on('keydown.' + STATE.id, function(event){ var keycode=event.keyCode, keycodeToMove=P.component.key[ keycode ], target=getRealEventTarget(event, ELEMENT) if(keycode==27){ P.close(true) } else if(target==P.$holder[0]&&(keycodeToMove||keycode==13)){ event.preventDefault() if(keycodeToMove){ PickerConstructor._.trigger(P.component.key.go, P, [ PickerConstructor._.trigger(keycodeToMove) ]) } else if(!P.$root.find('.' + CLASSES.highlighted).hasClass(CLASSES.disabled)){ P.set('select', P.component.item.highlight) if(SETTINGS.closeOnSelect){ P.close(true) }} } else if($.contains(P.$root[0], target)&&keycode==13){ event.preventDefault() target.click() }}) } return P.trigger('open') }, close: function(giveFocus){ if(giveFocus){ if(SETTINGS.editable){ ELEMENT.focus() }else{ P.$holder.off('focus.toOpen').focus() setTimeout(function(){ P.$holder.on('focus.toOpen', handleFocusToOpenEvent) }, 0) }} $ELEMENT.removeClass(CLASSES.active) aria(ELEMENT, 'expanded', false) setTimeout(function(){ P.$root.removeClass(CLASSES.opened + ' ' + CLASSES.focused) aria(P.$root[0], 'hidden', true) }, 0) if(!STATE.open) return P STATE.open=false if(IS_DEFAULT_THEME){ $('body'). css('overflow', ''). css('padding-right', '-=' + getScrollbarWidth()) } $document.off('.' + STATE.id) return P.trigger('close') }, clear: function(options){ return P.set('clear', null, options) }, set: function(thing, value, options){ var thingItem, thingValue, thingIsObject=$.isPlainObject(thing), thingObject=thingIsObject ? thing:{} options=thingIsObject&&$.isPlainObject(value) ? value:options||{} if(thing){ if(!thingIsObject){ thingObject[ thing ]=value } for(thingItem in thingObject){ thingValue=thingObject[ thingItem ] if(thingItem in P.component.item){ if(thingValue===undefined) thingValue=null P.component.set(thingItem, thingValue, options) } if(( thingItem=='select'||thingItem=='clear')&&SETTINGS.updateInput){ $ELEMENT. val(thingItem=='clear' ? '':P.get(thingItem, SETTINGS.format)). trigger('change') }} P.render() } return options.muted ? P:P.trigger('set', thingObject) }, get: function(thing, format){ thing=thing||'value' if(STATE[ thing ]!=null){ return STATE[ thing ] } if(thing=='valueSubmit'){ if(P._hidden){ return P._hidden.value } thing='value' } if(thing=='value'){ return ELEMENT.value } if(thing in P.component.item){ if(typeof format=='string'){ var thingValue=P.component.get(thing) return thingValue ? PickerConstructor._.trigger(P.component.formats.toString, P.component, [ format, thingValue ] ):'' } return P.component.get(thing) }}, on: function(thing, method, internal){ var thingName, thingMethod, thingIsObject=$.isPlainObject(thing), thingObject=thingIsObject ? thing:{} if(thing){ if(!thingIsObject){ thingObject[ thing ]=method } for(thingName in thingObject){ thingMethod=thingObject[ thingName ] if(internal){ thingName='_' + thingName } STATE.methods[ thingName ]=STATE.methods[ thingName ]||[] STATE.methods[ thingName ].push(thingMethod) }} return P }, off: function(){ var i, thingName, names=arguments; for(i=0, namesCount=names.length; i < namesCount; i +=1){ thingName=names[i] if(thingName in STATE.methods){ delete STATE.methods[thingName] }} return P }, trigger: function(name, data){ var _trigger=function(name){ var methodList=STATE.methods[ name ] if(methodList){ methodList.map(function(method){ PickerConstructor._.trigger(method, P, [ data ]) }) }} _trigger('_' + name) _trigger(name) return P }} //PickerInstance.prototype function createWrappedComponent(){ return PickerConstructor._.node('div', PickerConstructor._.node('div', PickerConstructor._.node('div', PickerConstructor._.node('div', P.component.nodes(STATE.open), CLASSES.box ), CLASSES.wrap ), CLASSES.frame ), CLASSES.holder, 'tabindex="-1"' ) } function prepareElement(){ $ELEMENT. data(NAME, P). addClass(CLASSES.input). val($ELEMENT.data('value') ? P.get('select', SETTINGS.format) : ELEMENT.value ). on('focus.' + STATE.id + ' click.' + STATE.id, debounce(function(event){ event.preventDefault() P.open() }, 100)) if(!SETTINGS.editable){ $ELEMENT. on('keydown.' + STATE.id, handleKeydownEvent) } aria(ELEMENT, { haspopup: true, expanded: false, readonly: false, owns: ELEMENT.id + '_root' }) } function prepareElementRoot(){ aria(P.$root[0], 'hidden', true) } function prepareElementHolder(){ P.$holder. on({ keydown: handleKeydownEvent, 'focus.toOpen': handleFocusToOpenEvent, blur: function(){ $ELEMENT.removeClass(CLASSES.target) }, focusin: function(event){ P.$root.removeClass(CLASSES.focused) event.stopPropagation() }, 'mousedown click': function(event){ var target=getRealEventTarget(event, ELEMENT) if(target!=P.$holder[0]){ event.stopPropagation() if(event.type=='mousedown'&&!$(target).is('input, select, textarea, button, option')){ event.preventDefault() P.$holder.eq(0).focus() }} }}). on('click', '[data-pick], [data-nav], [data-clear], [data-close]', function(){ var $target=$(this), targetData=$target.data(), targetDisabled=$target.hasClass(CLASSES.navDisabled)||$target.hasClass(CLASSES.disabled), activeElement=getActiveElement() activeElement=activeElement&&((activeElement.type||activeElement.href) ? activeElement:null); if(targetDisabled||activeElement&&!$.contains(P.$root[0], activeElement)){ P.$holder.eq(0).focus() } if(!targetDisabled&&targetData.nav){ P.set('highlight', P.component.item.highlight, { nav: targetData.nav }) } else if(!targetDisabled&&'pick' in targetData){ P.set('select', targetData.pick) if(SETTINGS.closeOnSelect){ P.close(true) }} else if(targetData.clear){ P.clear() if(SETTINGS.closeOnClear){ P.close(true) }} else if(targetData.close){ P.close(true) }}) } function prepareElementHidden(){ var name if(SETTINGS.hiddenName===true){ name=ELEMENT.name ELEMENT.name='' }else{ name=[ typeof SETTINGS.hiddenPrefix=='string' ? SETTINGS.hiddenPrefix:'', typeof SETTINGS.hiddenSuffix=='string' ? SETTINGS.hiddenSuffix:'_submit' ] name=name[0] + ELEMENT.name + name[1] } P._hidden=$( '' )[0] $ELEMENT. on('change.' + STATE.id, function(){ P._hidden.value=ELEMENT.value ? P.get('select', SETTINGS.formatSubmit) : '' }) } function focusPickerOnceOpened(){ if(IS_DEFAULT_THEME&&supportsTransitions){ P.$holder.find('.' + CLASSES.frame).one('transitionend', function(){ P.$holder.eq(0).focus() }) }else{ setTimeout(function(){ P.$holder.eq(0).focus() }, 0) }} function handleFocusToOpenEvent(event){ event.stopPropagation() $ELEMENT.addClass(CLASSES.target) P.$root.addClass(CLASSES.focused) P.open() } function handleKeydownEvent(event){ var keycode=event.keyCode, isKeycodeDelete=/^(8|46)$/.test(keycode) if(keycode==27){ P.close(true) return false } if(keycode==32||isKeycodeDelete||!STATE.open&&P.component.key[keycode]){ event.preventDefault() event.stopPropagation() if(isKeycodeDelete){ P.clear().close() }else{ P.open() }} } return new PickerInstance() } PickerConstructor.klasses=function(prefix){ prefix=prefix||'picker' return { picker: prefix, opened: prefix + '--opened', focused: prefix + '--focused', input: prefix + '__input', active: prefix + '__input--active', target: prefix + '__input--target', holder: prefix + '__holder', frame: prefix + '__frame', wrap: prefix + '__wrap', box: prefix + '__box' }} //PickerConstructor.klasses function isUsingDefaultTheme(element){ var theme, prop='position' if(element.currentStyle){ theme=element.currentStyle[prop] } else if(window.getComputedStyle){ theme=getComputedStyle(element)[prop] } return theme=='fixed' } function getScrollbarWidth(){ if($html.height() <=$window.height()){ return 0 } var $outer=$('
'). appendTo('body') var widthWithoutScroll=$outer[0].offsetWidth $outer.css('overflow', 'scroll') var $inner=$('
').appendTo($outer) var widthWithScroll=$inner[0].offsetWidth $outer.remove() return widthWithoutScroll - widthWithScroll } function getRealEventTarget(event, ELEMENT){ var path=[] if(event.path){ path=event.path } if(event.originalEvent&&event.originalEvent.path){ path=event.originalEvent.path } if(path&&path.length > 0){ if(ELEMENT&&path.indexOf(ELEMENT) >=0){ return ELEMENT }else{ return path[0] }} return event.target } function debounce(func, wait, immediate){ var timeout; return function(){ var context=this, args=arguments; var later=function(){ timeout=null; if(!immediate) func.apply(context, args); }; var callNow=immediate&&!timeout; clearTimeout(timeout); timeout=setTimeout(later, wait); if(callNow) func.apply(context, args); };} PickerConstructor._={ group: function(groupObject){ var loopObjectScope, nodesList='', counter=PickerConstructor._.trigger(groupObject.min, groupObject) for(; counter <=PickerConstructor._.trigger(groupObject.max, groupObject, [ counter ]); counter +=groupObject.i){ loopObjectScope=PickerConstructor._.trigger(groupObject.item, groupObject, [ counter ]) nodesList +=PickerConstructor._.node(groupObject.node, loopObjectScope[ 0 ], loopObjectScope[ 1 ], loopObjectScope[ 2 ] ) } return nodesList }, node: function(wrapper, item, klass, attribute){ if(!item) return '' item=$.isArray(item) ? item.join(''):item klass=klass ? ' class="' + klass + '"':'' attribute=attribute ? ' ' + attribute:'' return '<' + wrapper + klass + attribute + '>' + item + '' }, lead: function(number){ return(number < 10 ? '0': '') + number }, trigger: function(callback, scope, args){ return typeof callback=='function' ? callback.apply(scope, args||[]):callback }, digits: function(string){ return(/\d/).test(string[ 1 ]) ? 2:1 }, isDate: function(value){ return {}.toString.call(value).indexOf('Date') > -1&&this.isInteger(value.getDate()) }, isInteger: function(value){ return {}.toString.call(value).indexOf('Number') > -1&&value % 1===0 }, ariaAttr: ariaAttr } PickerConstructor.extend=function(name, Component){ $.fn[ name ]=function(options, action){ var componentData=this.data(name) if(options=='picker'){ return componentData } if(componentData&&typeof options=='string'){ return PickerConstructor._.trigger(componentData[ options ], componentData, [ action ]) } return this.each(function(){ var $this=$(this) if(!$this.data(name)){ new PickerConstructor(this, name, Component, options) }}) } $.fn[ name ].defaults=Component.defaults } //PickerConstructor.extend function aria(element, attribute, value){ if($.isPlainObject(attribute)){ for(var key in attribute){ ariaSet(element, key, attribute[key]) }}else{ ariaSet(element, attribute, value) }} function ariaSet(element, attribute, value){ element.setAttribute((attribute=='role' ? '':'aria-') + attribute, value ) } function ariaAttr(attribute, data){ if(!$.isPlainObject(attribute)){ attribute={ attribute: data }} data='' for(var key in attribute){ var attr=(key=='role' ? '':'aria-') + key, attrVal=attribute[key] data +=attrVal==null ? '':attr + '="' + attribute[key] + '"' } return data } function getActiveElement(){ try { return document.activeElement } catch(err){ }} return PickerConstructor })); (function(factory){ if(typeof define=='function'&&define.amd) define(['./picker', 'jquery'], factory) else if(typeof exports=='object') module.exports=factory(require('./picker.js'), require('jquery')) else factory(Picker, jQuery) }(function(Picker, $){ var DAYS_IN_WEEK=7, WEEKS_IN_CALENDAR=6, _=Picker._ function DatePicker(picker, settings){ var calendar=this, element=picker.$node[ 0 ], elementValue=element.value, elementDataValue=picker.$node.data('value'), valueString=elementDataValue||elementValue, formatString=elementDataValue ? settings.formatSubmit:settings.format, isRTL=function(){ return element.currentStyle ? element.currentStyle.direction=='rtl' : getComputedStyle(picker.$root[0]).direction=='rtl' } calendar.settings=settings calendar.$node=picker.$node calendar.queue={ min: 'measure create', max: 'measure create', now: 'now create', select: 'parse create validate', highlight: 'parse navigate create validate', view: 'parse create validate viewset', disable: 'deactivate', enable: 'activate' } calendar.item={} calendar.item.clear=null calendar.item.disable=(settings.disable||[]).slice(0) calendar.item.enable=-(function(collectionDisabled){ return collectionDisabled[ 0 ]===true ? collectionDisabled.shift():-1 })(calendar.item.disable) calendar. set('min', settings.min). set('max', settings.max). set('now') if(valueString){ calendar.set('select', valueString, { format: formatString, defaultValue: true }) }else{ calendar. set('select', null). set('highlight', calendar.item.now) } calendar.key={ 40: 7, 38: -7, 39: function(){ return isRTL() ? -1:1 }, 37: function(){ return isRTL() ? 1:-1 }, go: function(timeChange){ var highlightedObject=calendar.item.highlight, targetDate=new Date(highlightedObject.year, highlightedObject.month, highlightedObject.date + timeChange) calendar.set('highlight', targetDate, { interval: timeChange } ) this.render() }} picker. on('render', function(){ picker.$root.find('.' + settings.klass.selectMonth).on('change', function(){ var value=this.value if(value){ picker.set('highlight', [ picker.get('view').year, value, picker.get('highlight').date ]) picker.$root.find('.' + settings.klass.selectMonth).trigger('focus') }}) picker.$root.find('.' + settings.klass.selectYear).on('change', function(){ var value=this.value if(value){ picker.set('highlight', [ value, picker.get('view').month, picker.get('highlight').date ]) picker.$root.find('.' + settings.klass.selectYear).trigger('focus') }}) }, 1). on('open', function(){ var includeToday='' if(calendar.disabled(calendar.get('now'))){ includeToday=':not(.' + settings.klass.buttonToday + ')' } picker.$root.find('button' + includeToday + ', select').attr('disabled', false) }, 1). on('close', function(){ picker.$root.find('button, select').attr('disabled', true) }, 1) } DatePicker.prototype.set=function(type, value, options){ var calendar=this, calendarItem=calendar.item if(value===null){ if(type=='clear') type='select' calendarItem[ type ]=value return calendar } calendarItem[(type=='enable' ? 'disable':type=='flip' ? 'enable':type) ]=calendar.queue[ type ].split(' ').map(function(method){ value=calendar[ method ](type, value, options) return value }).pop() if(type=='select'){ calendar.set('highlight', calendarItem.select, options) } else if(type=='highlight'){ calendar.set('view', calendarItem.highlight, options) } else if(type.match(/^(flip|min|max|disable|enable)$/)){ if(calendarItem.select&&calendar.disabled(calendarItem.select)){ calendar.set('select', calendarItem.select, options) } if(calendarItem.highlight&&calendar.disabled(calendarItem.highlight)){ calendar.set('highlight', calendarItem.highlight, options) }} return calendar } //DatePicker.prototype.set DatePicker.prototype.get=function(type){ return this.item[ type ] } //DatePicker.prototype.get DatePicker.prototype.create=function(type, value, options){ var isInfiniteValue, calendar=this value=value===undefined ? type:value if(value==-Infinity||value==Infinity){ isInfiniteValue=value } else if($.isPlainObject(value)&&_.isInteger(value.pick)){ value=value.obj } else if($.isArray(value)){ value=new Date(value[ 0 ], value[ 1 ], value[ 2 ]) value=_.isDate(value) ? value:calendar.create().obj } else if(_.isInteger(value)||_.isDate(value)){ value=calendar.normalize(new Date(value), options) } else { value=calendar.now(type, value, options) } return { year: isInfiniteValue||value.getFullYear(), month: isInfiniteValue||value.getMonth(), date: isInfiniteValue||value.getDate(), day: isInfiniteValue||value.getDay(), obj: isInfiniteValue||value, pick: isInfiniteValue||value.getTime() }} //DatePicker.prototype.create DatePicker.prototype.createRange=function(from, to){ var calendar=this, createDate=function(date){ if(date===true||$.isArray(date)||_.isDate(date)){ return calendar.create(date) } return date } if(!_.isInteger(from)){ from=createDate(from) } if(!_.isInteger(to)){ to=createDate(to) } if(_.isInteger(from)&&$.isPlainObject(to)){ from=[ to.year, to.month, to.date + from ]; } else if(_.isInteger(to)&&$.isPlainObject(from)){ to=[ from.year, from.month, from.date + to ]; } return { from: createDate(from), to: createDate(to) }} //DatePicker.prototype.createRange DatePicker.prototype.withinRange=function(range, dateUnit){ range=this.createRange(range.from, range.to) return dateUnit.pick >=range.from.pick&&dateUnit.pick <=range.to.pick } DatePicker.prototype.overlapRanges=function(one, two){ var calendar=this one=calendar.createRange(one.from, one.to) two=calendar.createRange(two.from, two.to) return calendar.withinRange(one, two.from)||calendar.withinRange(one, two.to) || calendar.withinRange(two, one.from)||calendar.withinRange(two, one.to) } DatePicker.prototype.now=function(type, value, options){ value=new Date() if(options&&options.rel){ value.setDate(value.getDate() + options.rel) } return this.normalize(value, options) } DatePicker.prototype.navigate=function(type, value, options){ var targetDateObject, targetYear, targetMonth, targetDate, isTargetArray=$.isArray(value), isTargetObject=$.isPlainObject(value), viewsetObject=this.item.view if(isTargetArray||isTargetObject){ if(isTargetObject){ targetYear=value.year targetMonth=value.month targetDate=value.date }else{ targetYear=+value[0] targetMonth=+value[1] targetDate=+value[2] } if(options&&options.nav&&viewsetObject&&viewsetObject.month!==targetMonth){ targetYear=viewsetObject.year targetMonth=viewsetObject.month } targetDateObject=new Date(targetYear, targetMonth +(options&&options.nav ? options.nav:0), 1) targetYear=targetDateObject.getFullYear() targetMonth=targetDateObject.getMonth() while( new Date(targetYear, targetMonth, targetDate).getMonth()!==targetMonth){ targetDate -=1 } value=[ targetYear, targetMonth, targetDate ] } return value } //DatePicker.prototype.navigate DatePicker.prototype.normalize=function(value){ value.setHours(0, 0, 0, 0) return value } DatePicker.prototype.measure=function(type, value){ var calendar=this if(_.isInteger(value)){ value=calendar.now(type, value, { rel: value }) } else if(!value){ value=type=='min' ? -Infinity:Infinity } else if(typeof value=='string'){ value=calendar.parse(type, value) } return value } ///DatePicker.prototype.measure DatePicker.prototype.viewset=function(type, dateObject){ return this.create([ dateObject.year, dateObject.month, 1 ]) } DatePicker.prototype.validate=function(type, dateObject, options){ var calendar=this, originalDateObject=dateObject, interval=options&&options.interval ? options.interval:1, isFlippedBase=calendar.item.enable===-1, hasEnabledBeforeTarget, hasEnabledAfterTarget, minLimitObject=calendar.item.min, maxLimitObject=calendar.item.max, reachedMin, reachedMax, hasEnabledWeekdays=isFlippedBase&&calendar.item.disable.filter(function(value){ if($.isArray(value)){ var dateTime=calendar.create(value).pick if(dateTime < dateObject.pick) hasEnabledBeforeTarget=true else if(dateTime > dateObject.pick) hasEnabledAfterTarget=true } return _.isInteger(value) }).length if(!options||(!options.nav&&!options.defaultValue)) if((!isFlippedBase&&calendar.disabled(dateObject)) || (isFlippedBase&&calendar.disabled(dateObject)&&(hasEnabledWeekdays||hasEnabledBeforeTarget||hasEnabledAfterTarget)) || (!isFlippedBase&&(dateObject.pick <=minLimitObject.pick||dateObject.pick >=maxLimitObject.pick)) ){ if(isFlippedBase&&!hasEnabledWeekdays&&(( !hasEnabledAfterTarget&&interval > 0)||(!hasEnabledBeforeTarget&&interval < 0))){ interval *=-1 } while( calendar.disabled(dateObject)){ if(Math.abs(interval) > 1&&(dateObject.month < originalDateObject.month||dateObject.month > originalDateObject.month)){ dateObject=originalDateObject interval=interval > 0 ? 1:-1 } if(dateObject.pick <=minLimitObject.pick){ reachedMin=true interval=1 dateObject=calendar.create([ minLimitObject.year, minLimitObject.month, minLimitObject.date + (dateObject.pick===minLimitObject.pick ? 0:-1) ]) } else if(dateObject.pick >=maxLimitObject.pick){ reachedMax=true interval=-1 dateObject=calendar.create([ maxLimitObject.year, maxLimitObject.month, maxLimitObject.date + (dateObject.pick===maxLimitObject.pick ? 0:1) ]) } if(reachedMin&&reachedMax){ break } dateObject=calendar.create([ dateObject.year, dateObject.month, dateObject.date + interval ]) }} return dateObject } //DatePicker.prototype.validate DatePicker.prototype.disabled=function(dateToVerify){ var calendar=this, isDisabledMatch=calendar.item.disable.filter(function(dateToDisable){ if(_.isInteger(dateToDisable)){ return dateToVerify.day===(calendar.settings.firstDay ? dateToDisable:dateToDisable - 1) % 7 } if($.isArray(dateToDisable)||_.isDate(dateToDisable)){ return dateToVerify.pick===calendar.create(dateToDisable).pick } if($.isPlainObject(dateToDisable)){ return calendar.withinRange(dateToDisable, dateToVerify) }}) isDisabledMatch=isDisabledMatch.length&&!isDisabledMatch.filter(function(dateToDisable){ return $.isArray(dateToDisable)&&dateToDisable[3]=='inverted' || $.isPlainObject(dateToDisable)&&dateToDisable.inverted }).length return calendar.item.enable===-1 ? !isDisabledMatch:isDisabledMatch || dateToVerify.pick < calendar.item.min.pick || dateToVerify.pick > calendar.item.max.pick } //DatePicker.prototype.disabled DatePicker.prototype.parse=function(type, value, options){ var calendar=this, parsingObject={} if(!value||typeof value!='string'){ return value } if(!(options&&options.format)){ options=options||{} options.format=calendar.settings.format } calendar.formats.toArray(options.format).map(function(label){ var formattingLabel=calendar.formats[ label ], formatLength=formattingLabel ? _.trigger(formattingLabel, calendar, [ value, parsingObject ]):label.replace(/^!/, '').length if(formattingLabel){ parsingObject[ label ]=value.substr(0, formatLength) } value=value.substr(formatLength) }) return [ parsingObject.yyyy||parsingObject.yy, +(parsingObject.mm||parsingObject.m) - 1, parsingObject.dd||parsingObject.d ] } //DatePicker.prototype.parse DatePicker.prototype.formats=(function(){ function getWordLengthFromCollection(string, collection, dateObject){ var word=string.match(/[^\x00-\x7F]+|\w+/)[ 0 ] if(!dateObject.mm&&!dateObject.m){ dateObject.m=collection.indexOf(word) + 1 } return word.length } function getFirstWordLength(string){ return string.match(/\w+/)[ 0 ].length } return { d: function(string, dateObject){ return string ? _.digits(string):dateObject.date }, dd: function(string, dateObject){ return string ? 2:_.lead(dateObject.date) }, ddd: function(string, dateObject){ return string ? getFirstWordLength(string):this.settings.weekdaysShort[ dateObject.day ] }, dddd: function(string, dateObject){ return string ? getFirstWordLength(string):this.settings.weekdaysFull[ dateObject.day ] }, m: function(string, dateObject){ return string ? _.digits(string):dateObject.month + 1 }, mm: function(string, dateObject){ return string ? 2:_.lead(dateObject.month + 1) }, mmm: function(string, dateObject){ var collection=this.settings.monthsShort return string ? getWordLengthFromCollection(string, collection, dateObject):collection[ dateObject.month ] }, mmmm: function(string, dateObject){ var collection=this.settings.monthsFull return string ? getWordLengthFromCollection(string, collection, dateObject):collection[ dateObject.month ] }, yy: function(string, dateObject){ return string ? 2:('' + dateObject.year).slice(2) }, yyyy: function(string, dateObject){ return string ? 4:dateObject.year }, toArray: function(formatString){ return formatString.split(/(d{1,4}|m{1,4}|y{4}|yy|!.)/g) }, toString: function(formatString, itemObject){ var calendar=this return calendar.formats.toArray(formatString).map(function(label){ return _.trigger(calendar.formats[ label ], calendar, [ 0, itemObject ])||label.replace(/^!/, '') }).join('') }} })() //DatePicker.prototype.formats DatePicker.prototype.isDateExact=function(one, two){ var calendar=this if((_.isInteger(one)&&_.isInteger(two)) || (typeof one=='boolean'&&typeof two=='boolean') ){ return one===two } if((_.isDate(one)||$.isArray(one)) && (_.isDate(two)||$.isArray(two)) ){ return calendar.create(one).pick===calendar.create(two).pick } if($.isPlainObject(one)&&$.isPlainObject(two)){ return calendar.isDateExact(one.from, two.from)&&calendar.isDateExact(one.to, two.to) } return false } DatePicker.prototype.isDateOverlap=function(one, two){ var calendar=this, firstDay=calendar.settings.firstDay ? 1:0 if(_.isInteger(one)&&(_.isDate(two)||$.isArray(two))){ one=one % 7 + firstDay return one===calendar.create(two).day + 1 } if(_.isInteger(two)&&(_.isDate(one)||$.isArray(one))){ two=two % 7 + firstDay return two===calendar.create(one).day + 1 } if($.isPlainObject(one)&&$.isPlainObject(two)){ return calendar.overlapRanges(one, two) } return false } DatePicker.prototype.flipEnable=function(val){ var itemObject=this.item itemObject.enable=val||(itemObject.enable==-1 ? 1:-1) } DatePicker.prototype.deactivate=function(type, datesToDisable){ var calendar=this, disabledItems=calendar.item.disable.slice(0) if(datesToDisable=='flip'){ calendar.flipEnable() } else if(datesToDisable===false){ calendar.flipEnable(1) disabledItems=[] } else if(datesToDisable===true){ calendar.flipEnable(-1) disabledItems=[] }else{ datesToDisable.map(function(unitToDisable){ var matchFound for(var index=0; index < disabledItems.length; index +=1){ if(calendar.isDateExact(unitToDisable, disabledItems[index])){ matchFound=true break }} if(!matchFound){ if(_.isInteger(unitToDisable) || _.isDate(unitToDisable) || $.isArray(unitToDisable) || ($.isPlainObject(unitToDisable)&&unitToDisable.from&&unitToDisable.to) ){ disabledItems.push(unitToDisable) }} }) } return disabledItems } //DatePicker.prototype.deactivate DatePicker.prototype.activate=function(type, datesToEnable){ var calendar=this, disabledItems=calendar.item.disable, disabledItemsCount=disabledItems.length if(datesToEnable=='flip'){ calendar.flipEnable() } else if(datesToEnable===true){ calendar.flipEnable(1) disabledItems=[] } else if(datesToEnable===false){ calendar.flipEnable(-1) disabledItems=[] }else{ datesToEnable.map(function(unitToEnable){ var matchFound, disabledUnit, index, isExactRange for(index=0; index < disabledItemsCount; index +=1){ disabledUnit=disabledItems[index] if(calendar.isDateExact(disabledUnit, unitToEnable)){ matchFound=disabledItems[index]=null isExactRange=true break } else if(calendar.isDateOverlap(disabledUnit, unitToEnable)){ if($.isPlainObject(unitToEnable)){ unitToEnable.inverted=true matchFound=unitToEnable } else if($.isArray(unitToEnable)){ matchFound=unitToEnable if(!matchFound[3]) matchFound.push('inverted') } else if(_.isDate(unitToEnable)){ matchFound=[ unitToEnable.getFullYear(), unitToEnable.getMonth(), unitToEnable.getDate(), 'inverted' ] } break }} if(matchFound) for(index=0; index < disabledItemsCount; index +=1){ if(calendar.isDateExact(disabledItems[index], unitToEnable)){ disabledItems[index]=null break }} if(isExactRange) for(index=0; index < disabledItemsCount; index +=1){ if(calendar.isDateOverlap(disabledItems[index], unitToEnable)){ disabledItems[index]=null break }} if(matchFound){ disabledItems.push(matchFound) }}) } return disabledItems.filter(function(val){ return val!=null }) } //DatePicker.prototype.activate DatePicker.prototype.nodes=function(isOpen){ var calendar=this, settings=calendar.settings, calendarItem=calendar.item, nowObject=calendarItem.now, selectedObject=calendarItem.select, highlightedObject=calendarItem.highlight, viewsetObject=calendarItem.view, disabledCollection=calendarItem.disable, minLimitObject=calendarItem.min, maxLimitObject=calendarItem.max, tableHead=(function(collection, fullCollection){ if(settings.firstDay){ collection.push(collection.shift()) fullCollection.push(fullCollection.shift()) } return _.node('thead', _.node('tr', _.group({ min: 0, max: DAYS_IN_WEEK - 1, i: 1, node: 'th', item: function(counter){ return [ collection[ counter ], settings.klass.weekdays, 'scope=col title="' + fullCollection[ counter ] + '"' ] }}) ) ) })(( settings.showWeekdaysFull ? settings.weekdaysFull:settings.weekdaysShort).slice(0), settings.weekdaysFull.slice(0)), createMonthNav=function(next){ return _.node('div', ' ', settings.klass[ 'nav' +(next ? 'Next':'Prev') ] + ( (next&&viewsetObject.year >=maxLimitObject.year&&viewsetObject.month >=maxLimitObject.month) || (!next&&viewsetObject.year <=minLimitObject.year&&viewsetObject.month <=minLimitObject.month) ? ' ' + settings.klass.navDisabled:'' ), 'data-nav=' +(next||-1) + ' ' + _.ariaAttr({ role: 'button', controls: calendar.$node[0].id + '_table' }) + ' ' + 'title="' + (next ? settings.labelMonthNext:settings.labelMonthPrev) + '"' ) }, createMonthLabel=function(){ var monthsCollection=settings.showMonthsShort ? settings.monthsShort:settings.monthsFull if(settings.selectMonths){ return _.node('select', _.group({ min: 0, max: 11, i: 1, node: 'option', item: function(loopedMonth){ return [ monthsCollection[ loopedMonth ], 0, 'value=' + loopedMonth + (viewsetObject.month==loopedMonth ? ' selected':'') + ( ( (viewsetObject.year==minLimitObject.year&&loopedMonth < minLimitObject.month) || (viewsetObject.year==maxLimitObject.year&&loopedMonth > maxLimitObject.month) ) ? ' disabled':'' ) ] }}), settings.klass.selectMonth, (isOpen ? '':'disabled') + ' ' + _.ariaAttr({ controls: calendar.$node[0].id + '_table' }) + ' ' + 'title="' + settings.labelMonthSelect + '"' ) } return _.node('div', monthsCollection[ viewsetObject.month ], settings.klass.month) }, createYearLabel=function(){ var focusedYear=viewsetObject.year, numberYears=settings.selectYears===true ? 5:~~(settings.selectYears / 2) if(numberYears){ var minYear=minLimitObject.year, maxYear=maxLimitObject.year, lowestYear=focusedYear - numberYears, highestYear=focusedYear + numberYears if(minYear > lowestYear){ highestYear +=minYear - lowestYear lowestYear=minYear } if(maxYear < highestYear){ var availableYears=lowestYear - minYear, neededYears=highestYear - maxYear lowestYear -=availableYears > neededYears ? neededYears:availableYears highestYear=maxYear } return _.node('select', _.group({ min: lowestYear, max: highestYear, i: 1, node: 'option', item: function(loopedYear){ return [ loopedYear, 0, 'value=' + loopedYear +(focusedYear==loopedYear ? ' selected':'') ] }}), settings.klass.selectYear, (isOpen ? '':'disabled') + ' ' + _.ariaAttr({ controls: calendar.$node[0].id + '_table' }) + ' ' + 'title="' + settings.labelYearSelect + '"' ) } return _.node('div', focusedYear, settings.klass.year) } return _.node('div', (settings.selectYears ? createYearLabel() + createMonthLabel():createMonthLabel() + createYearLabel()) + createMonthNav() + createMonthNav(1), settings.klass.header ) + _.node('table', tableHead + _.node('tbody', _.group({ min: 0, max: WEEKS_IN_CALENDAR - 1, i: 1, node: 'tr', item: function(rowCounter){ var shiftDateBy=settings.firstDay&&calendar.create([ viewsetObject.year, viewsetObject.month, 1 ]).day===0 ? -7:0 return [ _.group({ min: DAYS_IN_WEEK * rowCounter - viewsetObject.day + shiftDateBy + 1, max: function(){ return this.min + DAYS_IN_WEEK - 1 }, i: 1, node: 'td', item: function(targetDate){ targetDate=calendar.create([ viewsetObject.year, viewsetObject.month, targetDate +(settings.firstDay ? 1:0) ]) var isSelected=selectedObject&&selectedObject.pick==targetDate.pick, isHighlighted=highlightedObject&&highlightedObject.pick==targetDate.pick, isDisabled=disabledCollection&&calendar.disabled(targetDate)||targetDate.pick < minLimitObject.pick||targetDate.pick > maxLimitObject.pick, formattedDate=_.trigger(calendar.formats.toString, calendar, [ settings.format, targetDate ]) return [ _.node('div', targetDate.date, (function(klasses){ klasses.push(viewsetObject.month==targetDate.month ? settings.klass.infocus:settings.klass.outfocus) if(nowObject.pick==targetDate.pick){ klasses.push(settings.klass.now) } if(isSelected){ klasses.push(settings.klass.selected) } if(isHighlighted){ klasses.push(settings.klass.highlighted) } if(isDisabled){ klasses.push(settings.klass.disabled) } return klasses.join(' ') })([ settings.klass.day ]), 'data-pick=' + targetDate.pick + ' ' + _.ariaAttr({ role: 'gridcell', label: formattedDate, selected: isSelected&&calendar.$node.val()===formattedDate ? true:null, activedescendant: isHighlighted ? true:null, disabled: isDisabled ? true:null }) ), '', _.ariaAttr({ role: 'presentation' }) ] }}) ] }}) ), settings.klass.table, 'id="' + calendar.$node[0].id + '_table' + '" ' + _.ariaAttr({ role: 'grid', controls: calendar.$node[0].id, readonly: true }) ) + _.node('div', _.node('button', settings.today, settings.klass.buttonToday, 'type=button data-pick=' + nowObject.pick + (isOpen&&!calendar.disabled(nowObject) ? '':' disabled') + ' ' + _.ariaAttr({ controls: calendar.$node[0].id })) + _.node('button', settings.clear, settings.klass.buttonClear, 'type=button data-clear=1' + (isOpen ? '':' disabled') + ' ' + _.ariaAttr({ controls: calendar.$node[0].id })) + _.node('button', settings.close, settings.klass.buttonClose, 'type=button data-close=true ' + (isOpen ? '':' disabled') + ' ' + _.ariaAttr({ controls: calendar.$node[0].id })), settings.klass.footer ) } //DatePicker.prototype.nodes DatePicker.defaults=(function(prefix){ return { labelMonthNext: 'Next month', labelMonthPrev: 'Previous month', labelMonthSelect: 'Select a month', labelYearSelect: 'Select a year', monthsFull: [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ], monthsShort: [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ], weekdaysFull: [ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' ], weekdaysShort: [ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ], today: 'Today', clear: 'Clear', close: 'Close', closeOnSelect: true, closeOnClear: true, updateInput: true, format: 'd mmmm, yyyy', klass: { table: prefix + 'table', header: prefix + 'header', navPrev: prefix + 'nav--prev', navNext: prefix + 'nav--next', navDisabled: prefix + 'nav--disabled', month: prefix + 'month', year: prefix + 'year', selectMonth: prefix + 'select--month', selectYear: prefix + 'select--year', weekdays: prefix + 'weekday', day: prefix + 'day', disabled: prefix + 'day--disabled', selected: prefix + 'day--selected', highlighted: prefix + 'day--highlighted', now: prefix + 'day--today', infocus: prefix + 'day--infocus', outfocus: prefix + 'day--outfocus', footer: prefix + 'footer', buttonClear: prefix + 'button--clear', buttonToday: prefix + 'button--today', buttonClose: prefix + 'button--close' }} })(Picker.klasses().picker + '__') Picker.extend('pickadate', DatePicker) })); (function(factory){ if(typeof define=='function'&&define.amd) define(['./picker', 'jquery'], factory) else if(typeof exports=='object') module.exports=factory(require('./picker.js'), require('jquery')) else factory(Picker, jQuery) }(function(Picker, $){ var HOURS_IN_DAY=24, MINUTES_IN_HOUR=60, HOURS_TO_NOON=12, MINUTES_IN_DAY=HOURS_IN_DAY * MINUTES_IN_HOUR, _=Picker._ function TimePicker(picker, settings){ var clock=this, elementValue=picker.$node[ 0 ].value, elementDataValue=picker.$node.data('value'), valueString=elementDataValue||elementValue, formatString=elementDataValue ? settings.formatSubmit:settings.format clock.settings=settings clock.$node=picker.$node clock.queue={ interval: 'i', min: 'measure create', max: 'measure create', now: 'now create', select: 'parse create validate', highlight: 'parse create validate', view: 'parse create validate', disable: 'deactivate', enable: 'activate' } clock.item={} clock.item.clear=null clock.item.interval=settings.interval||30 clock.item.disable=(settings.disable||[]).slice(0) clock.item.enable=-(function(collectionDisabled){ return collectionDisabled[ 0 ]===true ? collectionDisabled.shift():-1 })(clock.item.disable) clock. set('min', settings.min). set('max', settings.max). set('now') if(valueString){ clock.set('select', valueString, { format: formatString }) }else{ clock. set('select', null). set('highlight', clock.item.now) } clock.key={ 40: 1, 38: -1, 39: 1, 37: -1, go: function(timeChange){ clock.set('highlight', clock.item.highlight.pick + timeChange * clock.item.interval, { interval: timeChange * clock.item.interval } ) this.render() }} picker. on('render', function(){ var $pickerHolder=picker.$root.children(), $viewset=$pickerHolder.find('.' + settings.klass.viewset), vendors=function(prop){ return ['webkit', 'moz', 'ms', 'o', ''].map(function(vendor){ return(vendor ? '-' + vendor + '-':'') + prop }) }, animations=function($el, state){ vendors('transform').map(function(prop){ $el.css(prop, state) }) vendors('transition').map(function(prop){ $el.css(prop, state) }) } if($viewset.length){ animations($pickerHolder, 'none') $pickerHolder[ 0 ].scrollTop=~~$viewset.position().top -($viewset[ 0 ].clientHeight * 2) animations($pickerHolder, '') }}, 1). on('open', function(){ picker.$root.find('button').attr('disabled', false) }, 1). on('close', function(){ picker.$root.find('button').attr('disabled', true) }, 1) } TimePicker.prototype.set=function(type, value, options){ var clock=this, clockItem=clock.item if(value===null){ if(type=='clear') type='select' clockItem[ type ]=value return clock } clockItem[(type=='enable' ? 'disable':type=='flip' ? 'enable':type) ]=clock.queue[ type ].split(' ').map(function(method){ value=clock[ method ](type, value, options) return value }).pop() if(type=='select'){ clock.set('highlight', clockItem.select, options) } else if(type=='highlight'){ clock.set('view', clockItem.highlight, options) } else if(type=='interval'){ clock. set('min', clockItem.min, options). set('max', clockItem.max, options) } else if(type.match(/^(flip|min|max|disable|enable)$/)){ if(clockItem.select&&clock.disabled(clockItem.select)){ clock.set('select', value, options) } if(clockItem.highlight&&clock.disabled(clockItem.highlight)){ clock.set('highlight', value, options) } if(type=='min'){ clock.set('max', clockItem.max, options) }} return clock } //TimePicker.prototype.set TimePicker.prototype.get=function(type){ return this.item[ type ] } //TimePicker.prototype.get TimePicker.prototype.create=function(type, value, options){ var clock=this value=value===undefined ? type:value if(_.isDate(value)){ value=[ value.getHours(), value.getMinutes() ] } if($.isPlainObject(value)&&_.isInteger(value.pick)){ value=value.pick } else if($.isArray(value)){ value=+value[ 0 ] * MINUTES_IN_HOUR + (+value[ 1 ]) } else if(!_.isInteger(value)){ value=clock.now(type, value, options) } if(type=='max'&&value < clock.item.min.pick){ value +=MINUTES_IN_DAY } if(type!='min'&&type!='max'&&(value - clock.item.min.pick) % clock.item.interval!==0){ value +=clock.item.interval } value=clock.normalize(type, value, options) return { hour: ~~(HOURS_IN_DAY + value / MINUTES_IN_HOUR) % HOURS_IN_DAY, mins:(MINUTES_IN_HOUR + value % MINUTES_IN_HOUR) % MINUTES_IN_HOUR, time:(MINUTES_IN_DAY + value) % MINUTES_IN_DAY, pick: value % MINUTES_IN_DAY }} //TimePicker.prototype.create TimePicker.prototype.createRange=function(from, to){ var clock=this, createTime=function(time){ if(time===true||$.isArray(time)||_.isDate(time)){ return clock.create(time) } return time } if(!_.isInteger(from)){ from=createTime(from) } if(!_.isInteger(to)){ to=createTime(to) } if(_.isInteger(from)&&$.isPlainObject(to)){ from=[ to.hour, to.mins +(from * clock.settings.interval) ]; } else if(_.isInteger(to)&&$.isPlainObject(from)){ to=[ from.hour, from.mins +(to * clock.settings.interval) ]; } return { from: createTime(from), to: createTime(to) }} //TimePicker.prototype.createRange TimePicker.prototype.withinRange=function(range, timeUnit){ range=this.createRange(range.from, range.to) return timeUnit.pick >=range.from.pick&&timeUnit.pick <=range.to.pick } TimePicker.prototype.overlapRanges=function(one, two){ var clock=this one=clock.createRange(one.from, one.to) two=clock.createRange(two.from, two.to) return clock.withinRange(one, two.from)||clock.withinRange(one, two.to) || clock.withinRange(two, one.from)||clock.withinRange(two, one.to) } TimePicker.prototype.now=function(type, value){ var interval=this.item.interval, date=new Date(), nowMinutes=date.getHours() * MINUTES_IN_HOUR + date.getMinutes(), isValueInteger=_.isInteger(value), isBelowInterval nowMinutes -=nowMinutes % interval isBelowInterval=value < 0&&interval * value + nowMinutes <=-interval nowMinutes +=type=='min'&&isBelowInterval ? 0:interval if(isValueInteger){ nowMinutes +=interval * ( isBelowInterval&&type!='max' ? value + 1 : value ) } return nowMinutes } //TimePicker.prototype.now TimePicker.prototype.normalize=function(type, value){ var interval=this.item.interval, minTime=this.item.min&&this.item.min.pick||0 value -=type=='min' ? 0:(value - minTime) % interval return value } //TimePicker.prototype.normalize TimePicker.prototype.measure=function(type, value, options){ var clock=this if(!value){ value=type=='min' ? [ 0, 0 ]:[ HOURS_IN_DAY - 1, MINUTES_IN_HOUR - 1 ] } if(typeof value=='string'){ value=clock.parse(type, value) } else if(value===true||_.isInteger(value)){ value=clock.now(type, value, options) } else if($.isPlainObject(value)&&_.isInteger(value.pick)){ value=clock.normalize(type, value.pick, options) } return value } ///TimePicker.prototype.measure TimePicker.prototype.validate=function(type, timeObject, options){ var clock=this, interval=options&&options.interval ? options.interval:clock.item.interval if(clock.disabled(timeObject)){ timeObject=clock.shift(timeObject, interval) } timeObject=clock.scope(timeObject) if(clock.disabled(timeObject)){ timeObject=clock.shift(timeObject, interval * -1) } return timeObject } //TimePicker.prototype.validate TimePicker.prototype.disabled=function(timeToVerify){ var clock=this, isDisabledMatch=clock.item.disable.filter(function(timeToDisable){ if(_.isInteger(timeToDisable)){ return timeToVerify.hour==timeToDisable } if($.isArray(timeToDisable)||_.isDate(timeToDisable)){ return timeToVerify.pick==clock.create(timeToDisable).pick } if($.isPlainObject(timeToDisable)){ return clock.withinRange(timeToDisable, timeToVerify) }}) isDisabledMatch=isDisabledMatch.length&&!isDisabledMatch.filter(function(timeToDisable){ return $.isArray(timeToDisable)&&timeToDisable[2]=='inverted' || $.isPlainObject(timeToDisable)&&timeToDisable.inverted }).length return clock.item.enable===-1 ? !isDisabledMatch:isDisabledMatch || timeToVerify.pick < clock.item.min.pick || timeToVerify.pick > clock.item.max.pick } //TimePicker.prototype.disabled TimePicker.prototype.shift=function(timeObject, interval){ var clock=this, minLimit=clock.item.min.pick, maxLimit=clock.item.max.pick interval=interval||clock.item.interval while( clock.disabled(timeObject)){ timeObject=clock.create(timeObject.pick +=interval) if(timeObject.pick <=minLimit||timeObject.pick >=maxLimit){ break }} return timeObject } //TimePicker.prototype.shift TimePicker.prototype.scope=function(timeObject){ var minLimit=this.item.min.pick, maxLimit=this.item.max.pick return this.create(timeObject.pick > maxLimit ? maxLimit:timeObject.pick < minLimit ? minLimit:timeObject) } //TimePicker.prototype.scope TimePicker.prototype.parse=function(type, value, options){ var hour, minutes, isPM, item, parseValue, clock=this, parsingObject={} if(!value||typeof value!='string'){ return value } if(!(options&&options.format)){ options=options||{} options.format=clock.settings.format } clock.formats.toArray(options.format).map(function(label){ var substring, formattingLabel=clock.formats[ label ], formatLength=formattingLabel ? _.trigger(formattingLabel, clock, [ value, parsingObject ]) : label.replace(/^!/, '').length if(formattingLabel){ substring=value.substr(0, formatLength) parsingObject[ label ]=substring.match(/^\d+$/) ? +substring:substring } value=value.substr(formatLength) }) for(item in parsingObject){ parseValue=parsingObject[item] if(_.isInteger(parseValue)){ if(item.match(/^(h|hh)$/i)){ hour=parseValue if(item=='h'||item=='hh'){ hour %=12 }} else if(item=='i'){ minutes=parseValue }} else if(item.match(/^a$/i)&&parseValue.match(/^p/i)&&('h' in parsingObject||'hh' in parsingObject)){ isPM=true }} return (isPM ? hour + 12:hour) * MINUTES_IN_HOUR + minutes } //TimePicker.prototype.parse TimePicker.prototype.formats={ h: function(string, timeObject){ return string ? _.digits(string):timeObject.hour % HOURS_TO_NOON||HOURS_TO_NOON }, hh: function(string, timeObject){ return string ? 2:_.lead(timeObject.hour % HOURS_TO_NOON||HOURS_TO_NOON) }, H: function(string, timeObject){ return string ? _.digits(string):'' +(timeObject.hour % 24) }, HH: function(string, timeObject){ return string ? _.digits(string):_.lead(timeObject.hour % 24) }, i: function(string, timeObject){ return string ? 2:_.lead(timeObject.mins) }, a: function(string, timeObject){ return string ? 4:MINUTES_IN_DAY / 2 > timeObject.time % MINUTES_IN_DAY ? 'a.m.':'p.m.' }, A: function(string, timeObject){ return string ? 2:MINUTES_IN_DAY / 2 > timeObject.time % MINUTES_IN_DAY ? 'AM':'PM' }, toArray: function(formatString){ return formatString.split(/(h{1,2}|H{1,2}|i|a|A|!.)/g) }, toString: function(formatString, itemObject){ var clock=this return clock.formats.toArray(formatString).map(function(label){ return _.trigger(clock.formats[ label ], clock, [ 0, itemObject ])||label.replace(/^!/, '') }).join('') }} //TimePicker.prototype.formats TimePicker.prototype.isTimeExact=function(one, two){ var clock=this if((_.isInteger(one)&&_.isInteger(two)) || (typeof one=='boolean'&&typeof two=='boolean') ){ return one===two } if((_.isDate(one)||$.isArray(one)) && (_.isDate(two)||$.isArray(two)) ){ return clock.create(one).pick===clock.create(two).pick } if($.isPlainObject(one)&&$.isPlainObject(two)){ return clock.isTimeExact(one.from, two.from)&&clock.isTimeExact(one.to, two.to) } return false } TimePicker.prototype.isTimeOverlap=function(one, two){ var clock=this if(_.isInteger(one)&&(_.isDate(two)||$.isArray(two))){ return one===clock.create(two).hour } if(_.isInteger(two)&&(_.isDate(one)||$.isArray(one))){ return two===clock.create(one).hour } if($.isPlainObject(one)&&$.isPlainObject(two)){ return clock.overlapRanges(one, two) } return false } TimePicker.prototype.flipEnable=function(val){ var itemObject=this.item itemObject.enable=val||(itemObject.enable==-1 ? 1:-1) } TimePicker.prototype.deactivate=function(type, timesToDisable){ var clock=this, disabledItems=clock.item.disable.slice(0) if(timesToDisable=='flip'){ clock.flipEnable() } else if(timesToDisable===false){ clock.flipEnable(1) disabledItems=[] } else if(timesToDisable===true){ clock.flipEnable(-1) disabledItems=[] }else{ timesToDisable.map(function(unitToDisable){ var matchFound for(var index=0; index < disabledItems.length; index +=1){ if(clock.isTimeExact(unitToDisable, disabledItems[index])){ matchFound=true break }} if(!matchFound){ if(_.isInteger(unitToDisable) || _.isDate(unitToDisable) || $.isArray(unitToDisable) || ($.isPlainObject(unitToDisable)&&unitToDisable.from&&unitToDisable.to) ){ disabledItems.push(unitToDisable) }} }) } return disabledItems } //TimePicker.prototype.deactivate TimePicker.prototype.activate=function(type, timesToEnable){ var clock=this, disabledItems=clock.item.disable, disabledItemsCount=disabledItems.length if(timesToEnable=='flip'){ clock.flipEnable() } else if(timesToEnable===true){ clock.flipEnable(1) disabledItems=[] } else if(timesToEnable===false){ clock.flipEnable(-1) disabledItems=[] }else{ timesToEnable.map(function(unitToEnable){ var matchFound, disabledUnit, index, isRangeMatched for(index=0; index < disabledItemsCount; index +=1){ disabledUnit=disabledItems[index] if(clock.isTimeExact(disabledUnit, unitToEnable)){ matchFound=disabledItems[index]=null isRangeMatched=true break } else if(clock.isTimeOverlap(disabledUnit, unitToEnable)){ if($.isPlainObject(unitToEnable)){ unitToEnable.inverted=true matchFound=unitToEnable } else if($.isArray(unitToEnable)){ matchFound=unitToEnable if(!matchFound[2]) matchFound.push('inverted') } else if(_.isDate(unitToEnable)){ matchFound=[ unitToEnable.getFullYear(), unitToEnable.getMonth(), unitToEnable.getDate(), 'inverted' ] } break }} if(matchFound) for(index=0; index < disabledItemsCount; index +=1){ if(clock.isTimeExact(disabledItems[index], unitToEnable)){ disabledItems[index]=null break }} if(isRangeMatched) for(index=0; index < disabledItemsCount; index +=1){ if(clock.isTimeOverlap(disabledItems[index], unitToEnable)){ disabledItems[index]=null break }} if(matchFound){ disabledItems.push(matchFound) }}) } return disabledItems.filter(function(val){ return val!=null }) } //TimePicker.prototype.activate TimePicker.prototype.i=function(type, value){ return _.isInteger(value)&&value > 0 ? value:this.item.interval } TimePicker.prototype.nodes=function(isOpen){ var clock=this, settings=clock.settings, selectedObject=clock.item.select, highlightedObject=clock.item.highlight, viewsetObject=clock.item.view, disabledCollection=clock.item.disable return _.node('ul', _.group({ min: clock.item.min.pick, max: clock.item.max.pick, i: clock.item.interval, node: 'li', item: function(loopedTime){ loopedTime=clock.create(loopedTime) var timeMinutes=loopedTime.pick, isSelected=selectedObject&&selectedObject.pick==timeMinutes, isHighlighted=highlightedObject&&highlightedObject.pick==timeMinutes, isDisabled=disabledCollection&&clock.disabled(loopedTime), formattedTime=_.trigger(clock.formats.toString, clock, [ settings.format, loopedTime ]) return [ _.trigger(clock.formats.toString, clock, [ _.trigger(settings.formatLabel, clock, [ loopedTime ])||settings.format, loopedTime ]), (function(klasses){ if(isSelected){ klasses.push(settings.klass.selected) } if(isHighlighted){ klasses.push(settings.klass.highlighted) } if(viewsetObject&&viewsetObject.pick==timeMinutes){ klasses.push(settings.klass.viewset) } if(isDisabled){ klasses.push(settings.klass.disabled) } return klasses.join(' ') })([ settings.klass.listItem ]), 'data-pick=' + loopedTime.pick + ' ' + _.ariaAttr({ role: 'option', label: formattedTime, selected: isSelected&&clock.$node.val()===formattedTime ? true:null, activedescendant: isHighlighted ? true:null, disabled: isDisabled ? true:null }) ] }}) + _.node('li', _.node('button', settings.clear, settings.klass.buttonClear, 'type=button data-clear=1' +(isOpen ? '':' disabled') + ' ' + _.ariaAttr({ controls: clock.$node[0].id }) ), '', _.ariaAttr({ role: 'presentation' }) ), settings.klass.list, _.ariaAttr({ role: 'listbox', controls: clock.$node[0].id }) ) } //TimePicker.prototype.nodes TimePicker.defaults=(function(prefix){ return { clear: 'Clear', format: 'h:i A', interval: 30, closeOnSelect: true, closeOnClear: true, updateInput: true, klass: { picker: prefix + ' ' + prefix + '--time', holder: prefix + '__holder', list: prefix + '__list', listItem: prefix + '__list-item', disabled: prefix + '__list-item--disabled', selected: prefix + '__list-item--selected', highlighted: prefix + '__list-item--highlighted', viewset: prefix + '__list-item--viewset', now: prefix + '__list-item--now', buttonClear: prefix + '__button--clear' }} })(Picker.klasses().picker) Picker.extend('pickatime', TimePicker) })); if(![].map){ Array.prototype.map=function(callback, self){ var array=this, len=array.length, newArray=new Array(len) for(var i=0; i < len; i++){ if(i in array){ newArray[ i ]=callback.call(self, array[ i ], i, array) }} return newArray }} if(![].filter){ Array.prototype.filter=function(callback){ if(this==null) throw new TypeError() var t=Object(this), len=t.length >>> 0 if(typeof callback!='function') throw new TypeError() var newArray=[], thisp=arguments[ 1 ] for(var i=0; i < len; i++){ if(i in t){ var val=t[ i ] if(callback.call(thisp, val, i, t)) newArray.push(val) }} return newArray }} if(![].indexOf){ Array.prototype.indexOf=function(searchElement){ if(this==null) throw new TypeError() var t=Object(this), len=t.length >>> 0 if(len===0) return -1 var n=0 if(arguments.length > 1){ n=Number(arguments[ 1 ]) if(n!=n){ n=0 } else if(n!==0&&n!=Infinity&&n!=-Infinity){ n=(n > 0||-1) * Math.floor(Math.abs(n)) }} if(n >=len) return -1 var k=n >=0 ? n:Math.max(len - Math.abs(n), 0) for(; k < len; k++){ if(k in t&&t[ k ]===searchElement) return k } return -1 }} var nativeSplit=String.prototype.split, compliantExecNpcg=/()??/.exec('')[1]===undefined String.prototype.split=function(separator, limit){ var str=this if(Object.prototype.toString.call(separator)!=='[object RegExp]'){ return nativeSplit.call(str, separator, limit) } var output=[], flags=(separator.ignoreCase ? 'i':'') + (separator.multiline ? 'm':'') + (separator.extended ? 'x':'') + (separator.sticky ? 'y':''), lastLastIndex=0, separator2, match, lastIndex, lastLength separator=new RegExp(separator.source, flags + 'g') str +='' if(!compliantExecNpcg){ separator2=new RegExp('^' + separator.source + '$(?!\\s)', flags) } limit=limit===undefined ? -1 >>> 0:limit >>> 0 while (match=separator.exec(str)){ lastIndex=match.index + match[0].length if(lastIndex > lastLastIndex){ output.push(str.slice(lastLastIndex, match.index)) if(!compliantExecNpcg&&match.length > 1){ match[0].replace(separator2, function (){ for (var i=1; i < arguments.length - 2; i++){ if(arguments[i]===undefined){ match[i]=undefined }} }) } if(match.length > 1&&match.index < str.length){ Array.prototype.push.apply(output, match.slice(1)) } lastLength=match[0].length lastLastIndex=lastIndex if(output.length >=limit){ break }} if(separator.lastIndex===match.index){ separator.lastIndex++ }} if(lastLastIndex===str.length){ if(lastLength||!separator.test('')){ output.push('') }}else{ output.push(str.slice(lastLastIndex)) } return output.length > limit ? output.slice(0, limit):output }; jQuery.extend(jQuery.fn.pickadate.defaults, { monthsFull: [ 'ژانویه', 'فوریه', 'مارس', 'آوریل', 'مه', 'ژوئن', 'ژوئیه', 'اوت', 'سپتامبر', 'اکتبر', 'نوامبر', 'دسامبر'], monthsShort: [ 'ژانویه', 'فوریه', 'مارس', 'آوریل', 'مه', 'ژوئن', 'ژوئیه', 'اوت', 'سپتامبر', 'اکتبر', 'نوامبر', 'دسامبر' ], weekdaysFull: [ 'یکشنبه', 'دوشنبه', 'سه شنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه', 'شنبه' ], weekdaysShort: [ 'یکشنبه', 'دوشنبه', 'سه شنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه', 'شنبه' ], today: 'امروز', clear: 'پاک کردن', close: 'بستن', format: 'yyyy mmmm dd', formatSubmit: 'yyyy/mm/dd', labelMonthNext: 'ماه بعدی', labelMonthPrev: 'ماه قبلی' }); jQuery.extend(jQuery.fn.pickatime.defaults, { clear: 'پاک کردن' }); !function(e){"object"==typeof exports&&"undefined"!=typeof module||"function"!=typeof define||!define.amd?e():define("inert",e)}((function(){"use strict";var e,t,n,i,o,r,s=function(e,t,n){return t&&a(e.prototype,t),n&&a(e,n),e};function a(e,t){for(var n=0;n2?arguments[2]:void 0,s=Math.min((void 0===f?u:i(f,u))-a,u-c),l=1;for(a0;)a in r?r[c]=r[a]:delete r[c],c+=l,a+=l;return r}},{113:113,117:117,118:118}],18:[function(t,n,r){"use strict";var e=t(118),i=t(113),o=t(117);n.exports=function fill(t){for(var n=e(this),r=o(n.length),u=arguments.length,c=i(u>1?arguments[1]:void 0,r),a=u>2?arguments[2]:void 0,f=void 0===a?r:i(a,r);f>c;)n[c++]=t;return n}},{113:113,117:117,118:118}],19:[function(t,n,r){var e=t(116),i=t(117),o=t(113);n.exports=function(t){return function(n,r,u){var c,a=e(n),f=i(a.length),s=o(u,f);if(t&&r!=r){for(;f>s;)if((c=a[s++])!=c)return!0}else for(;f>s;s++)if((t||s in a)&&a[s]===r)return t||s||0;return!t&&-1}}},{113:113,116:116,117:117}],20:[function(t,n,r){var e=t(32),i=t(53),o=t(118),u=t(117),c=t(23);n.exports=function(t,n){var r=1==t,a=2==t,f=3==t,s=4==t,l=6==t,h=5==t||l,p=n||c;return function(n,c,v){for(var d,y,g=o(n),x=i(g),m=e(c,v,3),b=u(x.length),S=0,w=r?p(n,b):a?p(n,0):void 0;b>S;S++)if((h||S in x)&&(d=x[S],y=m(d,S,g),t))if(r)w[S]=y;else if(y)switch(t){case 3:return!0;case 5:return d;case 6:return S;case 2:w.push(d)}else if(s)return!1;return l?-1:f||s?s:w}}},{117:117,118:118,23:23,32:32,53:53}],21:[function(t,n,r){var e=t(11),i=t(118),o=t(53),u=t(117);n.exports=function(t,n,r,c,a){e(n);var f=i(t),s=o(f),l=u(f.length),h=a?l-1:0,p=a?-1:1;if(r<2)for(;;){if(h in s){c=s[h],h+=p;break}if(h+=p,a?h<0:l<=h)throw TypeError("Reduce of empty array with no initial value")}for(;a?h>=0:l>h;h+=p)h in s&&(c=n(c,s[h],h,f));return c}},{11:11,117:117,118:118,53:53}],22:[function(t,n,r){var e=t(57),i=t(55),o=t(128)("species");n.exports=function(t){var n;return i(t)&&(n=t.constructor,"function"!=typeof n||n!==Array&&!i(n.prototype)||(n=void 0),e(n)&&null===(n=n[o])&&(n=void 0)),void 0===n?Array:n}},{128:128,55:55,57:57}],23:[function(t,n,r){var e=t(22);n.exports=function(t,n){return new(e(t))(n)}},{22:22}],24:[function(t,n,r){"use strict";var e=t(11),i=t(57),o=t(52),u=[].slice,c={},a=function(t,n,r){if(!(n in c)){for(var e=[],i=0;i1?arguments[1]:void 0,3);r=r?r.n:this._f;)for(e(r.v,r.k,this);r&&r.r;)r=r.p},has:function has(t){return!!y(v(this,n),t)}}),h&&e(s.prototype,"size",{get:function(){return v(this,n)[d]}}),s},def:function(t,n,r){var e,i,o=y(t,n);return o?o.v=r:(t._l=o={i:i=p(n,!0),k:n,v:r,p:e=t._l,n:void 0,r:!1},t._f||(t._f=o),e&&(e.n=o),t[d]++,"F"!==i&&(t._i[i]=o)),t},getEntry:y,setStrong:function(t,n,r){f(t,n,function(t,r){this._t=v(t,n),this._k=r,this._l=void 0},function(){for(var t=this,n=t._k,r=t._l;r&&r.r;)r=r.p;return t._t&&(t._l=r=r?r.n:t._t._f)?"keys"==n?s(0,r.k):"values"==n?s(0,r.v):s(0,[r.k,r.v]):(t._t=void 0,s(1))},r?"entries":"values",!r,!0),l(n)}}},{125:125,15:15,32:32,36:36,45:45,61:61,63:63,70:70,74:74,75:75,93:93,99:99}],28:[function(t,n,r){"use strict";var e=t(93),i=t(70).getWeak,o=t(16),u=t(57),c=t(15),a=t(45),f=t(20),s=t(47),l=t(125),h=f(5),p=f(6),v=0,d=function(t){return t._l||(t._l=new y)},y=function(){this.a=[]},g=function(t,n){return h(t.a,function(t){return t[0]===n})};y.prototype={get:function(t){var n=g(this,t);if(n)return n[1]},has:function(t){return!!g(this,t)},set:function(t,n){var r=g(this,t);r?r[1]=n:this.a.push([t,n])},delete:function(t){var n=p(this.a,function(n){return n[0]===t});return~n&&this.a.splice(n,1),!!~n}},n.exports={getConstructor:function(t,n,r,o){var f=t(function(t,e){c(t,f,n,"_i"),t._t=n,t._i=v++,t._l=void 0,void 0!=e&&a(e,r,t[o],t)});return e(f.prototype,{delete:function(t){if(!u(t))return!1;var r=i(t);return!0===r?d(l(this,n)).delete(t):r&&s(r,this._i)&&delete r[this._i]},has:function has(t){if(!u(t))return!1;var r=i(t);return!0===r?d(l(this,n)).has(t):r&&s(r,this._i)}}),f},def:function(t,n,r){var e=i(o(n),!0);return!0===e?d(t).set(n,r):e[t._i]=r,t},ufstore:d}},{125:125,15:15,16:16,20:20,45:45,47:47,57:57,70:70,93:93}],29:[function(t,n,r){"use strict";var e=t(46),i=t(40),o=t(94),u=t(93),c=t(70),a=t(45),f=t(15),s=t(57),l=t(42),h=t(62),p=t(100),v=t(51);n.exports=function(t,n,r,d,y,g){var x=e[t],m=x,b=y?"set":"add",S=m&&m.prototype,w={},_=function(t){var n=S[t];o(S,t,"delete"==t?function(t){return!(g&&!s(t))&&n.call(this,0===t?0:t)}:"has"==t?function has(t){return!(g&&!s(t))&&n.call(this,0===t?0:t)}:"get"==t?function get(t){return g&&!s(t)?void 0:n.call(this,0===t?0:t)}:"add"==t?function add(t){return n.call(this,0===t?0:t),this}:function set(t,r){return n.call(this,0===t?0:t,r),this})};if("function"==typeof m&&(g||S.forEach&&!l(function(){(new m).entries().next()}))){var E=new m,F=E[b](g?{}:-0,1)!=E,I=l(function(){E.has(1)}),O=h(function(t){new m(t)}),P=!g&&l(function(){for(var t=new m,n=5;n--;)t[b](n,n);return!t.has(-0)});O||(m=n(function(n,r){f(n,m,t);var e=v(new x,n,m);return void 0!=r&&a(r,y,e[b],e),e}),m.prototype=S,S.constructor=m),(I||P)&&(_("delete"),_("has"),y&&_("get")),(P||F)&&_(b),g&&S.clear&&delete S.clear}else m=d.getConstructor(n,t,y,b),u(m.prototype,r),c.NEED=!0;return p(m,t),w[t]=m,i(i.G+i.W+i.F*(m!=x),w),g||d.setStrong(m,t,y),m}},{100:100,15:15,40:40,42:42,45:45,46:46,51:51,57:57,62:62,70:70,93:93,94:94}],30:[function(t,n,r){var e=n.exports={version:"2.6.1"};"number"==typeof __e&&(__e=e)},{}],31:[function(t,n,r){"use strict";var e=t(75),i=t(92);n.exports=function(t,n,r){n in t?e.f(t,n,i(0,r)):t[n]=r}},{75:75,92:92}],32:[function(t,n,r){var e=t(11);n.exports=function(t,n,r){if(e(t),void 0===n)return t;switch(r){case 1:return function(r){return t.call(n,r)};case 2:return function(r,e){return t.call(n,r,e)};case 3:return function(r,e,i){return t.call(n,r,e,i)}}return function(){return t.apply(n,arguments)}}},{11:11}],33:[function(t,n,r){"use strict";var e=t(42),i=Date.prototype.getTime,o=Date.prototype.toISOString,u=function(t){return t>9?t:"0"+t};n.exports=e(function(){return"0385-07-25T07:06:39.999Z"!=o.call(new Date(-5e13-1))})||!e(function(){o.call(new Date(NaN))})?function toISOString(){if(!isFinite(i.call(this)))throw RangeError("Invalid time value");var t=this,n=t.getUTCFullYear(),r=t.getUTCMilliseconds(),e=n<0?"-":n>9999?"+":"";return e+("00000"+Math.abs(n)).slice(e?-6:-4)+"-"+u(t.getUTCMonth()+1)+"-"+u(t.getUTCDate())+"T"+u(t.getUTCHours())+":"+u(t.getUTCMinutes())+":"+u(t.getUTCSeconds())+"."+(r>99?r:"0"+u(r))+"Z"}:o},{42:42}],34:[function(t,n,r){"use strict";var e=t(16),i=t(119);n.exports=function(t){if("string"!==t&&"number"!==t&&"default"!==t)throw TypeError("Incorrect hint");return i(e(this),"number"!=t)}},{119:119,16:16}],35:[function(t,n,r){n.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},{}],36:[function(t,n,r){n.exports=!t(42)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},{42:42}],37:[function(t,n,r){var e=t(57),i=t(46).document,o=e(i)&&e(i.createElement);n.exports=function(t){return o?i.createElement(t):{}}},{46:46,57:57}],38:[function(t,n,r){n.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},{}],39:[function(t,n,r){var e=t(83),i=t(80),o=t(84);n.exports=function(t){var n=e(t),r=i.f;if(r)for(var u,c=r(t),a=o.f,f=0;c.length>f;)a.call(t,u=c[f++])&&n.push(u);return n}},{80:80,83:83,84:84}],40:[function(t,n,r){var e=t(46),i=t(30),o=t(48),u=t(94),c=t(32),a=function(t,n,r){var f,s,l,h,p=t&a.F,v=t&a.G,d=t&a.S,y=t&a.P,g=t&a.B,x=v?e:d?e[n]||(e[n]={}):(e[n]||{}).prototype,m=v?i:i[n]||(i[n]={}),b=m.prototype||(m.prototype={});v&&(r=n);for(f in r)s=!p&&x&&void 0!==x[f],l=(s?x:r)[f],h=g&&s?c(l,e):y&&"function"==typeof l?c(Function.call,l):l,x&&u(x,f,l,t&a.U),m[f]!=l&&o(m,f,h),y&&b[f]!=l&&(b[f]=l)};e.core=i,a.F=1,a.G=2,a.S=4,a.P=8,a.B=16,a.W=32,a.U=64,a.R=128,n.exports=a},{30:30,32:32,46:46,48:48,94:94}],41:[function(t,n,r){var e=t(128)("match");n.exports=function(t){var n=/./;try{"/./"[t](n)}catch(r){try{return n[e]=!1,!"/./"[t](n)}catch(t){}}return!0}},{128:128}],42:[function(t,n,r){n.exports=function(t){try{return!!t()}catch(t){return!0}}},{}],43:[function(t,n,r){"use strict";t(224);var e=t(94),i=t(48),o=t(42),u=t(35),c=t(128),a=t(96),f=c("species"),s=!o(function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$")}),l=function(){var t=/(?:)/,n=t.exec;t.exec=function(){return n.apply(this,arguments)};var r="ab".split(t);return 2===r.length&&"a"===r[0]&&"b"===r[1]}();n.exports=function(t,n,r){var h=c(t),p=!o(function(){var n={};return n[h]=function(){return 7},7!=""[t](n)}),v=p?!o(function(){var n=!1,r=/a/;return r.exec=function(){return n=!0,null},"split"===t&&(r.constructor={},r.constructor[f]=function(){return r}),r[h](""),!n}):void 0;if(!p||!v||"replace"===t&&!s||"split"===t&&!l){var d=/./[h],y=r(u,h,""[t],function maybeCallNative(t,n,r,e,i){return n.exec===a?p&&!i?{done:!0,value:d.call(n,r,e)}:{done:!0,value:t.call(r,n,e)}:{done:!1}}),g=y[0],x=y[1];e(String.prototype,t,g),i(RegExp.prototype,h,2==n?function(t,n){return x.call(t,this,n)}:function(t){return x.call(t,this)})}}},{128:128,224:224,35:35,42:42,48:48,94:94,96:96}],44:[function(t,n,r){"use strict";var e=t(16);n.exports=function(){var t=e(this),n="";return t.global&&(n+="g"),t.ignoreCase&&(n+="i"),t.multiline&&(n+="m"),t.unicode&&(n+="u"),t.sticky&&(n+="y"),n}},{16:16}],45:[function(t,n,r){var e=t(32),i=t(59),o=t(54),u=t(16),c=t(117),a=t(129),f={},s={},r=n.exports=function(t,n,r,l,h){var p,v,d,y,g=h?function(){return t}:a(t),x=e(r,l,n?2:1),m=0;if("function"!=typeof g)throw TypeError(t+" is not iterable!");if(o(g)){for(p=c(t.length);p>m;m++)if((y=n?x(u(v=t[m])[0],v[1]):x(t[m]))===f||y===s)return y}else for(d=g.call(t);!(v=d.next()).done;)if((y=i(d,x,v.value,n))===f||y===s)return y};r.BREAK=f,r.RETURN=s},{117:117,129:129,16:16,32:32,54:54,59:59}],46:[function(t,n,r){var e=n.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=e)},{}],47:[function(t,n,r){var e={}.hasOwnProperty;n.exports=function(t,n){return e.call(t,n)}},{}],48:[function(t,n,r){var e=t(75),i=t(92);n.exports=t(36)?function(t,n,r){return e.f(t,n,i(1,r))}:function(t,n,r){return t[n]=r,t}},{36:36,75:75,92:92}],49:[function(t,n,r){var e=t(46).document;n.exports=e&&e.documentElement},{46:46}],50:[function(t,n,r){n.exports=!t(36)&&!t(42)(function(){return 7!=Object.defineProperty(t(37)("div"),"a",{get:function(){return 7}}).a})},{36:36,37:37,42:42}],51:[function(t,n,r){var e=t(57),i=t(98).set;n.exports=function(t,n,r){var o,u=n.constructor;return u!==r&&"function"==typeof u&&(o=u.prototype)!==r.prototype&&e(o)&&i&&i(t,o),t}},{57:57,98:98}],52:[function(t,n,r){n.exports=function(t,n,r){var e=void 0===r;switch(n.length){case 0:return e?t():t.call(r);case 1:return e?t(n[0]):t.call(r,n[0]);case 2:return e?t(n[0],n[1]):t.call(r,n[0],n[1]);case 3:return e?t(n[0],n[1],n[2]):t.call(r,n[0],n[1],n[2]);case 4:return e?t(n[0],n[1],n[2],n[3]):t.call(r,n[0],n[1],n[2],n[3])}return t.apply(r,n)}},{}],53:[function(t,n,r){var e=t(26);n.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==e(t)?t.split(""):Object(t)}},{26:26}],54:[function(t,n,r){var e=t(64),i=t(128)("iterator"),o=Array.prototype;n.exports=function(t){return void 0!==t&&(e.Array===t||o[i]===t)}},{128:128,64:64}],55:[function(t,n,r){var e=t(26);n.exports=Array.isArray||function isArray(t){return"Array"==e(t)}},{26:26}],56:[function(t,n,r){var e=t(57),i=Math.floor;n.exports=function isInteger(t){return!e(t)&&isFinite(t)&&i(t)===t}},{57:57}],57:[function(t,n,r){n.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},{}],58:[function(t,n,r){var e=t(57),i=t(26),o=t(128)("match");n.exports=function(t){var n;return e(t)&&(void 0!==(n=t[o])?!!n:"RegExp"==i(t))}},{128:128,26:26,57:57}],59:[function(t,n,r){var e=t(16);n.exports=function(t,n,r,i){try{return i?n(e(r)[0],r[1]):n(r)}catch(n){var o=t.return;throw void 0!==o&&e(o.call(t)),n}}},{16:16}],60:[function(t,n,r){"use strict";var e=t(74),i=t(92),o=t(100),u={};t(48)(u,t(128)("iterator"),function(){return this}),n.exports=function(t,n,r){t.prototype=e(u,{next:i(1,r)}),o(t,n+" Iterator")}},{100:100,128:128,48:48,74:74,92:92}],61:[function(t,n,r){"use strict";var e=t(65),i=t(40),o=t(94),u=t(48),c=t(64),a=t(60),f=t(100),s=t(81),l=t(128)("iterator"),h=!([].keys&&"next"in[].keys()),p=function(){return this};n.exports=function(t,n,r,v,d,y,g){a(r,n,v);var x,m,b,S=function(t){if(!h&&t in F)return F[t];switch(t){case"keys":return function keys(){return new r(this,t)};case"values":return function values(){return new r(this,t)}}return function entries(){return new r(this,t)}},w=n+" Iterator",_="values"==d,E=!1,F=t.prototype,I=F[l]||F["@@iterator"]||d&&F[d],O=I||S(d),P=d?_?S("entries"):O:void 0,A="Array"==n?F.entries||I:I;if(A&&(b=s(A.call(new t)))!==Object.prototype&&b.next&&(f(b,w,!0),e||"function"==typeof b[l]||u(b,l,p)),_&&I&&"values"!==I.name&&(E=!0,O=function values(){return I.call(this)}),e&&!g||!h&&!E&&F[l]||u(F,l,O),c[n]=O,c[w]=p,d)if(x={values:_?O:S("values"),keys:y?O:S("keys"),entries:P},g)for(m in x)m in F||o(F,m,x[m]);else i(i.P+i.F*(h||E),n,x);return x}},{100:100,128:128,40:40,48:48,60:60,64:64,65:65,81:81,94:94}],62:[function(t,n,r){var e=t(128)("iterator"),i=!1;try{var o=[7][e]();o.return=function(){i=!0},Array.from(o,function(){throw 2})}catch(t){}n.exports=function(t,n){if(!n&&!i)return!1;var r=!1;try{var o=[7],u=o[e]();u.next=function(){return{done:r=!0}},o[e]=function(){return u},t(o)}catch(t){}return r}},{128:128}],63:[function(t,n,r){n.exports=function(t,n){return{value:n,done:!!t}}},{}],64:[function(t,n,r){n.exports={}},{}],65:[function(t,n,r){n.exports=!1},{}],66:[function(t,n,r){var e=Math.expm1;n.exports=!e||e(10)>22025.465794806718||e(10)<22025.465794806718||-2e-17!=e(-2e-17)?function expm1(t){return 0==(t=+t)?t:t>-1e-6&&t<1e-6?t+t*t/2:Math.exp(t)-1}:e},{}],67:[function(t,n,r){var e=t(69),i=Math.pow,o=i(2,-52),u=i(2,-23),c=i(2,127)*(2-u),a=i(2,-126),f=function(t){return t+1/o-1/o};n.exports=Math.fround||function fround(t){var n,r,i=Math.abs(t),s=e(t);return ic||r!=r?s*(1/0):s*r)}},{69:69}],68:[function(t,n,r){n.exports=Math.log1p||function log1p(t){return(t=+t)>-1e-8&&t<1e-8?t-t*t/2:Math.log(1+t)}},{}],69:[function(t,n,r){n.exports=Math.sign||function sign(t){return 0==(t=+t)||t!=t?t:t<0?-1:1}},{}],70:[function(t,n,r){var e=t(123)("meta"),i=t(57),o=t(47),u=t(75).f,c=0,a=Object.isExtensible||function(){return!0},f=!t(42)(function(){return a(Object.preventExtensions({}))}),s=function(t){u(t,e,{value:{i:"O"+ ++c,w:{}}})},l=function(t,n){if(!i(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!o(t,e)){if(!a(t))return"F";if(!n)return"E";s(t)}return t[e].i},h=function(t,n){if(!o(t,e)){if(!a(t))return!0;if(!n)return!1;s(t)}return t[e].w},p=function(t){return f&&v.NEED&&a(t)&&!o(t,e)&&s(t),t},v=n.exports={KEY:e,NEED:!1,fastKey:l,getWeak:h,onFreeze:p}},{123:123,42:42,47:47,57:57,75:75}],71:[function(t,n,r){var e=t(46),i=t(112).set,o=e.MutationObserver||e.WebKitMutationObserver,u=e.process,c=e.Promise,a="process"==t(26)(u);n.exports=function(){var t,n,r,f=function(){var e,i;for(a&&(e=u.domain)&&e.exit();t;){i=t.fn,t=t.next;try{i()}catch(e){throw t?r():n=void 0,e}}n=void 0,e&&e.enter()};if(a)r=function(){u.nextTick(f)};else if(!o||e.navigator&&e.navigator.standalone)if(c&&c.resolve){var s=c.resolve(void 0);r=function(){s.then(f)}}else r=function(){i.call(e,f)};else{var l=!0,h=document.createTextNode("");new o(f).observe(h,{characterData:!0}),r=function(){h.data=l=!l}}return function(e){var i={fn:e,next:void 0};n&&(n.next=i),t||(t=i,r()),n=i}}},{112:112,26:26,46:46}],72:[function(t,n,r){"use strict";function PromiseCapability(t){var n,r;this.promise=new t(function(t,e){if(void 0!==n||void 0!==r)throw TypeError("Bad Promise constructor");n=t,r=e}),this.resolve=e(n),this.reject=e(r)}var e=t(11);n.exports.f=function(t){return new PromiseCapability(t)}},{11:11}],73:[function(t,n,r){"use strict";var e=t(83),i=t(80),o=t(84),u=t(118),c=t(53),a=Object.assign;n.exports=!a||t(42)(function(){var t={},n={},r=Symbol(),e="abcdefghijklmnopqrst";return t[r]=7,e.split("").forEach(function(t){n[t]=t}),7!=a({},t)[r]||Object.keys(a({},n)).join("")!=e})?function assign(t,n){for(var r=u(t),a=arguments.length,f=1,s=i.f,l=o.f;a>f;)for(var h,p=c(arguments[f++]),v=s?e(p).concat(s(p)):e(p),d=v.length,y=0;d>y;)l.call(p,h=v[y++])&&(r[h]=p[h]);return r}:a},{118:118,42:42,53:53,80:80,83:83,84:84}],74:[function(t,n,r){var e=t(16),i=t(76),o=t(38),u=t(101)("IE_PROTO"),c=function(){},a=function(){var n,r=t(37)("iframe"),e=o.length;for(r.style.display="none",t(49).appendChild(r),r.src="javascript:",n=r.contentWindow.document,n.open(),n.write("